Qt Data Visualization 概要

Qt Data Visualization モジュールは、学術研究や医療などの分析が要求される業界向けに、迅速に応答する複雑でダイナミックな 3D 可視化を開発する方法を提供します。 Qt 3D Data Visualizationは、3D棒グラフ、散布図、サーフェスの可視化を提供します。ユーザー・インタラクションとリアルタイムの3D描画ビジュアライゼーションを組み合わせることで、空間を効果的に使用するユーザー・インターフェースを作成できます。3Dと2Dの表示を切り替えることで、データの可視化において3Dの価値を真に活用することができます。

グラフのルック&フィールは、事前に定義されたテーマを使用するか、または新しいテーマを定義することによってカスタマイズすることができます。さらに、シーンはカメラの設定を指定することでカスタマイズでき、個々のアイテムは定義済みまたはユーザー定義のメッシュを使用することでカスタマイズできます。

Qt Data Visualization は、Qt アイテム モデルやハイト マップからのデータを視覚化するために使用できる、既製のデータ プロキシを提供します。各グラフタイプには基本的なプロキシ・タイプがあり、その可視化に適したフォーマットでデータを受け取ります。詳細については、Qt Data Visualization データ処理を参照してください。

エンドユーザーは、グラフの回転、データの拡大・縮小、項目の選択、読みやすくするための3Dデータの2Dスライスの表示など、いくつかの方法でグラフによって表示されるデータを操作することができます。詳細は、Qt Data Visualization Interacting with Dataを参照。

注: Qt Data Visualization モジュールはメンテナンス中です。新しいプロジェクトでは Qt Graphsモジュールの使用を検討してください。3Dレンダリングでは、QtGraphs 、QtQuick3Dを使用しています。QtQuick3DはQtRhiを使用しています。QtRhiは各プラットフォームのネイティブレンダリングバックエンド(macOSではMetal、WindowsではDirectX、LinuxではOpenGLまたはVulkan)に依存します。Qt Data Visualization からQt Graphs モジュールへの移行は、Qt Graphs Qt DataVisualization からの移行を参照してください。

グラフの種類

Qt Data Visualization モジュールには、以下の 3D グラフタイプがあります:

QAbstract3DGraph クラスはQWindow をサブクラス化し、さまざまなグラフ・タイプを実装する独自のサブクラスに対してレンダー・ループを提供します:Q3DBars Q3DScatter およびQ3DSurface 。グラフ・タイプによって、データの表示方法が決まります。

3D棒グラフ

3D棒グラフは、データをカテゴリー別にグループ化された3D棒として表示する。Q3DBarsQBar3DSeriesQBarDataProxy のクラスはグラフの作成に使われ、 、 のクラスはグラフにデータを設定したり、グラフの描画モードや網掛けなどの視覚的なプロパティを制御するのに使われます。QMLでは、対応する型はBars3DBar3DSeriesBarDataProxy です。

詳しくは、How to construct a minimal Q3DBars graph単純棒グラフの例を参照してください。

3D散布図

3D散布図はデータを点の集まりとして表示します。Q3DScatter クラスはグラフを作成するために使われ、QScatter3DSeriesQScatterDataProxy クラスはグラフにデータを設定したり、グラフの視覚的なプロパティを制御するために使われます。QMLでは、対応する型はScatter3DScatter3DSeriesScatterDataProxy です。

詳しくは、How to construct a minimal Q3DScatter graph単純散布図グラフの例を参照してください。

3D曲面グラフ

3D曲面グラフはデータを3D曲面プロットとして表示します。Q3DSurface クラスはグラフを作成するために使われ、QSurface3DSeriesQSurfaceDataProxy クラスはグラフにデータを設定したり、グラフの視覚的なプロパティを制御するために使われます。QMLでは、対応する型はSurface3DSurface3DSeriesSurfaceDataProxy です。

詳しくは、How to construct a minimal Q3DSurface graphGraph GallerySurface Graph Galleryの例を参照してください。

データのレンダリングにOpenGLを使う

データのレンダリングにはOpenGL 2.1以降を使用することを推奨します。OpenGL ES2を使用する場合(WindowsのAngleビルドを含む)、以下の機能はサポートされません:

  • アンチエイリアス
  • サーフェスのフラットシェーディング
  • ボリュームオブジェクト(3Dテクスチャを使用するため

ソフトウェア レンダラーでは、OpenGL ES2 エミュレーションのみが利用可能です(つまり、QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL) を使用する場合)。

レンダリングモードの選択

QML では、AbstractGraph3D.RenderingMode プロパティを設定することで、グラフをウィンドウの背景に直接描画するのか、それとも通常の QML アイテム描画時に描画されるオフスクリーン表面に描画するのかを指定することができます。

背景描画モードは間接描画モードよりも若干パフォーマンスが向上しますが、その代償としてQMLの動作が非標準となります。例えば、グラフは QML アイテムの Z 順序に従いませんし、部分的に透明にすることもできません。したがって、レンダリングモードの変更は、パフォーマンスとクオリティの問題です。

Qt Quick はデータレンダリング専用のシーングラフを使用するため、データビジュアライゼーションに最適です。

3D軸

Qt Data Visualization は、以下の軸タイプをサポートしています:

  • 値軸
  • カテゴリー軸

軸は、線またはグリッドを表示するように設定できます。どちらの軸タイプも、QAbstract3DAxis クラスまたはAbstractAxis3D QML タイプの特殊化です。

値軸には、値の範囲と、範囲を分割するセグメントとサブセグメント数を指定できます。各セグメント間にはラベルが引かれます。グリッド線は、各セグメントと各サブセグメントの間に引かれます。値軸は、QValue3DAxis クラスまたはValueAxis3D QML タイプを使用して実装されます。

カテゴリ軸には、名前付き範囲と調整可能な範囲幅があります。軸範囲によって定義されたデータ・ウィンドウ・サイズに基づいて、等しいサイズのカテゴリに分割されます。ラベルは、提供されている場合は、カテゴリの位置に描画されます。グリッド線は、表示されている場合はカテゴリ間に描画されます。カテゴリ軸は、QCategory3DAxis クラスまたはCategoryAxis3D QML タイプを使用して実装されます。

グラフに軸が明示的に設定されていない場合、ラベルのない一時的なデフォルト軸が作成されます。これらのデフォルト軸は軸アクセサによって変更することができますが、特定の方向に対して軸が明示的に設定されると、その方向のデフォルト軸は破棄されます。

すべてのグラフ・タイプで、複数の系列を同時に表示できる。すべての系列が同じ数の行と列を含む必要はない。行ラベルと列ラベルは、行軸と列軸に対して明示的に定義されていない限り、最初に追加された系列から取得される。

軸フォーマッタを使用して、値軸グリッド線とラベルをカスタマイズすることができます。QValue3DAxisFormatter クラスとValueAxis3DFormatter QML タイプは、線形値 3D 軸のフォーマット・ルールを提供します。QLogValue3DAxisFormatter クラスとLogValueAxis3DFormatter QMLタイプは、対数値3D軸のフォーマットルールを提供します。

極横軸は、polar プロパティを設定することで、曲面グラフや散布図に使用することができます。

3Dテーマ

テーマとは、グラフのすべての視覚的要素に適用される UI スタイル関連の設定を集めたもので、要素の色、フォント、可視性、光や環境光の強さなどがあります。

Qt Charts には以下の定義済みテーマが付属しており、カスタムテーマのベースとして使用できます:

  • Qtは緑を基調とした明るいテーマです。
  • 原色は、黄色を基調とした明るいテーマです。
  • Digiaはグレーを基調とした明るいテーマです。
  • Stone mossは、黄色を基調としたミディアムダークのテーマです。
  • アーミーブルーはブルーを基調としたミディアムライトのテーマです。
  • レトロはブラウンを基調としたミディアムライトのテーマ。
  • エボニーは白を基調としたダークなテーマ。
  • Isabelleは黄色を基調としたダークなテーマです。
  • User definedはデフォルトのテーマで、カスタマイズが可能です。詳しくはDefault Theme をご覧ください。

カスタムテーマはゼロから作成することもできる。

グラフが複数のデータ系列のデータを表示する場合、いくつかの設定は系列ごとに個別に指定できます。例えば、グラフの層ごとに異なるグラデーションを指定して、よりリアルに見せることができます。例については、Surface Graph Galleryを参照。

3Dシーンのカスタマイズ

3D シーンは、Q3DScene クラスまたはScene3D QML タイプを使用して実装します。シーンには、Q3DCamera クラスまたはCamera3D タイプで実装されたアクティブなカメラと、Q3DLight クラスまたはLight3D タイプで実装されたアクティブな光源があります。光源は常にカメラに対して配置されます。デフォルトでは、光の位置は自動的にカメラに追従します。

カメラのプリセット位置、回転、ズームレベルを指定してカスタマイズできます。例については、単純散布図を参照してください。

アイテムのカスタマイズ

Qt Data Visualization には、バー、アイテム、サーフェスのメッシュタイプがあらかじめ定義されています。メッシュタイプによって、棒、アイテム、サーフェスがグラフ上でどのように見えるかが決まります。ユーザー定義メッシュは、Wavefront OBJ ジオメトリ定義ファイルとして指定できます。メッシュの回転にはクォータニオンを設定することができます。

個々のアイテムのカスタマイズに加え、QCustom3DItem クラスまたはCustom3DItem QML タイプを使用して、カスタムアイテムをグラフに追加できます。アイテムはカスタムメッシュ、位置、拡大縮小、回転、そしてオプションのテクスチャーを持ちます。

QCustom3DVolume クラスとCustom3DVolume QML タイプを使用して、グラフに追加するボリューム レンダリング オブジェクトを作成できます。ボリュームレンダリングオブジェクトは、3Dテクスチャを持つボックスです。ボリュームには3つのスライス面があり、ボリュームの各主軸に沿って1つずつ配置されます。

QCustom3DLabel クラスとCustom3DLabel QML タイプは、テキスト、フォント、位置、拡大縮小、回転を指定したカスタムラベルを実装します。ラベルの色、ボーダー、背景は、アクティブなテーマによって決定されます。

© 2025 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.