Qt Graphs 3Dの概要
Qt Graphs モジュールは、学術研究や医療など、高度な分析が求められる業界向けに、応答性が良く、複雑かつ動的な3Dグラフを迅速に開発する手段を提供します。Qt Graphs は、3D棒グラフ、散布図、およびサーフェスグラフを提供します。ユーザー操作とリアルタイムの3D描画を組み合わせることで、空間を効果的に活用したユーザーインターフェースを構築することが可能になります。 3D表示と2D表示を切り替えることで、データ可視化において3Dの真価を最大限に活用できます。
グラフのルックアンドフィールは、定義済みのテーマを使用するか、新しいテーマを定義することでカスタマイズできます。さらに、カメラの設定を指定してシーンをカスタマイズしたり、定義済みまたはユーザー定義のメッシュを使用して個々のアイテムをカスタマイズしたりすることも可能です。
Qt Graphs Qtアイテムモデルやハイトマップからのデータを可視化するために使用できる、既製のデータプロキシを提供しています。各グラフタイプには、そのグラフに適した形式のデータを受け入れる基本的なプロキシタイプがあります。詳細については、『Qt Graphs: 3D でのデータ処理』を参照してください。
エンドユーザーは、グラフの回転、データの拡大・縮小、項目の選択、読みやすさを高めるための3Dデータの2Dスライスの表示など、さまざまな方法でグラフに表示されたデータと対話できます。詳細については、Qt Graphs の「3Dでのデータとの対話」を参照してください。
グラフの種類
Qt Graphs モジュールでは、以下の3Dグラフの種類が提供されています:
Q3DGraphsWidgetItem クラスは、バーグラフ、散布図、サーフェスグラフといった各グラフタイプを実装するサブクラス(Q3DBarsWidgetItem 、Q3DScatterWidgetItem 、Q3DSurfaceWidgetItem )向けのウィジェットAPIを提供します。グラフタイプによって、データの表示方法が決定されます。
すべての描画処理は、QQuickGraphsItem で行われます。このクラスはQQuick3DViewport を継承しており、 はQtQuick3D を使用してView3D を提供しています。また、このクラスには、Bars3D 、Scatter3D 、およびSurface3D 用の独自のサブクラスがあります。
3D棒グラフ
3D棒グラフは、カテゴリごとにグループ化された3Dの棒としてデータを表示します。グラフの作成には、Q3DGraphsWidgetItem クラスを使用します。QBar3DSeries クラスとQBarDataProxy クラスは、グラフへのデータ設定や、描画モードやシェーディングなどのグラフの視覚的プロパティの制御に使用されます。QMLでは、これに対応する型としてBars3D 、Bar3DSeries 、およびBarDataProxy があります。

詳細については、「How to construct a minimal Q3DBarsWidgetItem graph 」および「Simple Bar Graph」のサンプルを参照してください。
3D 散布図
3D 散布図は、データを点の集合またはスプラインとして表示します。グラフの作成には、Q3DScatterWidgetItem クラスが使用されます。グラフへのデータ設定や、グラフの視覚的なプロパティの制御には、QScatter3DSeries 、QSpline3DSeries 、およびQScatterDataProxy クラスが使用されます。QML では、これに対応する型としてScatter3D 、Scatter3DSeries 、Spline3DSeries 、およびScatterDataProxy があります。

詳細については、How to construct a minimal Q3DScatterWidgetItem graph および「Simple Scatter Graph」のサンプルを参照してください。
3D サーフェスグラフ
3D サーフェスグラフは、データを 3D サーフェスプロットとして表示します。グラフの作成には、Q3DSurfaceWidgetItem クラスを使用します。グラフへのデータ設定や、グラフの視覚的プロパティの制御には、QSurface3DSeries クラスおよびQSurfaceDataProxy クラスを使用します。QML では、これに対応する型として、Surface3D 、Surface3DSeries 、およびSurfaceDataProxy があります。

詳細については、How to construct a minimal Q3DSurfaceWidgetItem graph 、Graph Gallery、およびSurface Graph Galleryのサンプルを参照してください。
OpenGL ES を使用したデータのレンダリング
Qt Graphs はQtQuick3D に基づいており、つまりQt Graphs はレンダリングにターゲットプラットフォームのネイティブバックエンドを使用します。ただし、OpenGL ES3 や Vulkan など、それ以上のバージョンをサポートしていないターゲットで OpenGL ES2 が使用される場合、以下の機能はサポートされません:
- 3Dテクスチャを使用するボリュームオブジェクト
- インスタンス化。つまり、QtGraphs3D::OptimizationHint::Default は機能せず、代わりにQtGraphs3D::OptimizationHint::Legacy を使用する必要があります。
レンダリングモードの選択
QML では、GraphsItem3D.RenderingMode プロパティを設定することで、グラフをウィンドウの背景に直接レンダリングするか、それとも通常の QML アイテムのレンダリング中に描画されるオフスクリーンサーフェスにレンダリングするかを決定できます。
背景レンダリングモードは、間接レンダリングモードよりもわずかにパフォーマンスが優れていますが、その代償としてQMLの標準的な動作とは異なる挙動になります。例えば、グラフはアンチエイリアシングをサポートしていません。したがって、レンダリングモードの変更は、パフォーマンスと品質のトレードオフの問題となります。
Qt Quick はデータレンダリングに専用のシーングラフを使用するため、グラフには最適な選択肢となります。
3D 軸
Qt Graphs は、以下の軸タイプをサポートしています:
- 値軸
- カテゴリ軸
軸は、線またはグリッドを表示するように設定できます。どちらの軸タイプも、QAbstract3DAxis クラスまたはAbstract3DAxis QMLタイプの特殊化です。
値軸の場合、値の範囲と、その範囲を分割するためのセグメント数およびサブセグメント数を設定できます。デフォルトでは、各セグメントの間にラベルが描画されます。また、各セグメントと各サブセグメントの間には、デフォルトでグリッド線が描画されます。値軸は、QValue3DAxis クラスまたはValue3DAxis QML型を使用して実装されます。
カテゴリ軸には、名前付き範囲と調整可能な範囲幅があります。これは、軸の範囲によって定義されたデータウィンドウのサイズに基づいて、等しいサイズのカテゴリに分割されます。ラベルが指定されている場合、デフォルトではカテゴリの位置にラベルが描画されます。デフォルトでは、カテゴリ間にグリッド線が描画されます。カテゴリ軸は、QCategory3DAxis クラスまたはCategory3DAxis QMLタイプを使用して実装されます。
グラフに対して軸が明示的に設定されていない場合、ラベルのない一時的なデフォルトの軸が作成されます。これらのデフォルトの軸は軸アクセサを介して変更できますが、特定の向きに対して軸が明示的に設定されると、その向きのデフォルトの軸は破棄されます。
すべてのグラフタイプは、複数の系列を同時に表示することをサポートしています。すべての系列が同じ行数および列数である必要はありません。行および列のラベルは、行軸および列軸に対して明示的に定義されていない限り、最初に追加された系列から取得されます。
軸フォーマッタを使用すると、値軸の目盛り線やラベルをカスタマイズできます。QValue3DAxisFormatter クラスおよびValue3DAxisFormatter QMLタイプは、線形値の3D軸に対する書式設定ルールを提供します。QLogValue3DAxisFormatter クラスおよびLogValue3DAxisFormatter QMLタイプは、対数値の3D軸に対する書式設定ルールを提供します。
polar プロパティを設定することで、表面グラフや散布図で極座標の横軸を使用できます。棒グラフでも設定可能ですが、その場合は警告が表示され、設定は無視されます。
3Dシーンのカスタマイズ
Qt Graphs はQtQuick3D を基盤としているため、QtQuick3D シーンをQt Graphs シーンに統合することが可能です。詳細については、「Qt Graphs とQt Quick 3D の統合」を参照してください。
項目のカスタマイズ
Qt Graphs には、棒グラフや散布図アイテム用の定義済みメッシュタイプが用意されています。メッシュタイプによって、グラフ上の棒グラフや散布図アイテムの外観が決まります。また、メッシュファイルとしてカスタムジオメトリを指定することも可能です。詳細については、QAbstract3DSeries::userDefinedMesh( ) を参照してください。さらにバリエーションを増やすために、メッシュの回転にクォータニオンを設定することもできます。
個々のアイテムをカスタマイズするだけでなく、QCustom3DItem クラスやCustom3DItem QML タイプを使用して、グラフにカスタムアイテムを追加することもできます。これらのアイテムには、カスタムメッシュ、位置、スケール、回転、およびオプションでテクスチャが設定されています。
QCustom3DVolume クラスおよびCustom3DVolume QML型を使用して、グラフに追加するボリュームレンダリングされたオブジェクトを作成します。ボリュームレンダリングされたオブジェクトは、3Dテクスチャを持つボックスです。ボリュームに対しては、ボリュームの各主軸に沿った3つのスライス平面がサポートされています。
QCustom3DLabel クラスおよびCustom3DLabel QMLタイプは、指定されたテキスト、フォント、位置、拡大縮小、回転を持つカスタムラベルを実装します。アクティブなテーマによって、ラベルの色、境界線、背景が決まります。
カスタム入力の処理
Qt Graphs は、選択、回転、ズームなどの一般的な操作に対するデフォルトの入力ハンドラを実装しています。デフォルトの入力ハンドラの代わりにカスタム入力ハンドラを実装するには、必要な入力シグナルをオーバーライドしてください。
onTapped: {
// Disable the default input handler
unsetDefaultTapHandler()
// Implement own custom event handler
console.log("Custom tap event handler")
}© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.