Qt Data Visualization Übersicht
Das Modul Qt Data Visualization bietet eine Möglichkeit zur Entwicklung schnell reagierender, komplexer und dynamischer 3D-Visualisierungen für analytisch anspruchsvolle Branchen wie die akademische Forschung und die Medizin. Qt 3D Die Datenvisualisierung bietet 3D-Balken-, Streu- und Oberflächenvisualisierungen. Durch die Kombination von Benutzerinteraktion und 3D-Zeichnungsvisualisierungen in Echtzeit können Benutzeroberflächen erstellt werden, die den Raum effektiv nutzen. Der Wechsel zwischen 3D- und 2D-Darstellung ermöglicht es, den Wert von 3D bei der Visualisierung von Daten voll auszuschöpfen.
Das Aussehen der Diagramme kann durch die Verwendung der vordefinierten Themen oder die Definition neuer Themen angepasst werden. Darüber hinaus können Szenen durch Angabe von Einstellungen für die Kamera und einzelne Elemente durch Verwendung vordefinierter oder benutzerdefinierter Netze angepasst werden.
Qt Data Visualization bietet fertige Daten-Proxys, die zur Visualisierung von Daten aus Qt-Elementmodellen und Höhenkarten verwendet werden können. Jeder Diagrammtyp verfügt über einen grundlegenden Proxy-Typ, der Daten in einem für die jeweilige Visualisierung geeigneten Format annimmt. Weitere Informationen finden Sie unter Qt Data Visualization Datenverarbeitung.
Endbenutzer können auf verschiedene Weise mit den in Diagrammen dargestellten Daten interagieren, z. B. durch Drehen von Diagrammen, Vergrößern und Verkleinern von Daten, Auswählen von Elementen und Anzeigen von 2D-Slices der 3D-Daten zur besseren Lesbarkeit. Weitere Informationen finden Sie unter Qt Data Visualization Interaktion mit Daten.
Hinweis: Das Modul Qt Data Visualization befindet sich in der Wartungsphase. Für neue Projekte sollten Sie die Verwendung des Qt Graphs Modul. Für das 3D-Rendering verwendet QtGraphs QtQuick3D, das seinerseits QtRhi verwendet. QtRhi verlässt sich auf das native Rendering-Backend der jeweiligen Plattform (Metal unter macOS, DirectX unter Windows, OpenGL oder Vulkan unter Linux). Um von Qt Data Visualization zu Qt Graphs zu migrieren, lesen Sie bitte Qt Graphs Migration von Qt DataVisualization.
Diagrammtypen
Das Qt Data Visualization Modul bietet die folgenden 3D-Diagrammtypen:
Die Klasse QAbstract3DGraph ist eine Unterklasse von QWindow und bietet eine Rendering-Schleife für ihre eigenen Unterklassen, die die verschiedenen Diagrammtypen implementieren: Q3DBars, Q3DScatter, und Q3DSurface. Der Diagrammtyp bestimmt, wie die Daten dargestellt werden.
3D-Balkendiagramme
3D-Balkendiagramme stellen Daten als 3D-Balken dar, die nach Kategorien gruppiert sind. Die Klasse Q3DBars wird zur Erstellung eines Diagramms verwendet, und die Klassen QBar3DSeries und QBarDataProxy dienen zum Einstellen von Daten in das Diagramm sowie zur Steuerung der visuellen Eigenschaften des Diagramms, wie Zeichenmodus und Schattierung. In QML lauten die entsprechenden Typen Bars3D, Bar3DSeries und BarDataProxy.
Weitere Informationen finden Sie unter How to construct a minimal Q3DBars graph und Beispiele für einfache Balkendiagramme.
3D-Punktdiagramme
3D-Punktediagramme stellen Daten als eine Sammlung von Punkten dar. Die Klasse Q3DScatter wird verwendet, um ein Diagramm zu erstellen, und die Klassen QScatter3DSeries und QScatterDataProxy werden verwendet, um dem Diagramm Daten zuzuweisen und die visuellen Eigenschaften des Diagramms zu steuern. In QML lauten die entsprechenden Typen Scatter3D, Scatter3DSeries und ScatterDataProxy.
Weitere Informationen finden Sie unter How to construct a minimal Q3DScatter graph und Beispiele für einfache Streudiagramme.
3D-Oberflächendiagramme
3D-Oberflächendiagramme stellen Daten als 3D-Oberflächendiagramme dar. Die Klasse Q3DSurface wird verwendet, um ein Diagramm zu erstellen, und die Klassen QSurface3DSeries und QSurfaceDataProxy werden verwendet, um dem Diagramm Daten zuzuweisen und die visuellen Eigenschaften des Diagramms zu steuern. In QML lauten die entsprechenden Typen Surface3D, Surface3DSeries und SurfaceDataProxy.
Weitere Informationen finden Sie in den Beispielen How to construct a minimal Q3DSurface graph, Graph Gallery und Surface Graph Gallery.
Verwendung von OpenGL für das Rendering von Daten
Es wird empfohlen, OpenGL 2.1 oder höher für das Rendern von Daten zu verwenden. Wenn OpenGL ES2 verwendet wird (einschließlich Angle-Builds in Windows), werden die folgenden Funktionen nicht unterstützt:
- Schatten
- Antialiasing
- Flache Schattierung für Oberflächen
- Volumetrische Objekte, da sie 3D-Texturen verwenden
Für Software-Renderer ist nur die OpenGL ES2-Emulation verfügbar (d. h. bei Verwendung von QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL)).
Auswahl des Rendering-Modus
In QML können Sie mit der Eigenschaft AbstractGraph3D.RenderingMode festlegen, ob das Diagramm direkt auf dem Fensterhintergrund oder auf einer Offscreen-Oberfläche gerendert wird, die dann während des normalen QML-Elementrenderings gezeichnet wird.
Hintergrund-Rendering-Modi bieten eine etwas bessere Leistung als der indirekte Rendering-Modus, allerdings auf Kosten eines nicht standardmäßigen QML-Verhaltens. Die Graphen halten sich beispielsweise nicht an die z-Reihenfolge der QML-Elemente und können nicht teilweise transparent sein. Daher ist der Wechsel des Rendering-Modus eine Frage von Leistung und Qualität.
Qt Quick verwendet einen speziellen Szenegraphen für das Rendering von Daten und ist daher die beste Wahl für die Datenvisualisierung.
3D-Achsen
Qt Data Visualization unterstützt die folgenden Achsentypen:
- Werteachse
- Kategorie-Achse
Eine Achse kann so eingerichtet werden, dass sie eine Linie oder ein Gitter anzeigt. Beide Achsentypen sind Spezialisierungen der Klasse QAbstract3DAxis oder des QML-Typs AbstractAxis3D.
Eine Wertachse kann mit einem Wertebereich und der Anzahl der Segmente und Untersegmente versehen werden, in die der Bereich unterteilt werden soll. Zwischen den einzelnen Segmenten werden Beschriftungen gezeichnet. Zwischen jedem Segment und jedem Untersegment werden Rasterlinien gezeichnet. Die Wertachse wird mit der Klasse QValue3DAxis oder dem QML-Typ ValueAxis3D implementiert.
Eine Kategorieachse hat benannte Bereiche und einstellbare Bereichsbreiten. Sie ist in gleich große Kategorien unterteilt, basierend auf der durch den Achsenbereich definierten Datenfenstergröße. Beschriftungen werden an den Positionen der Kategorien gezeichnet, sofern vorhanden. Gitternetzlinien werden zwischen den Kategorien gezeichnet, falls sichtbar. Eine Kategorieachse wird mit der Klasse QCategory3DAxis oder dem QML-Typ CategoryAxis3D implementiert.
Wenn für ein Diagramm keine Achsen explizit festgelegt werden, werden temporäre Standardachsen ohne Beschriftung erstellt. Diese Standardachsen können über Achsen-Accessors geändert werden, aber sobald eine Achse explizit für eine bestimmte Ausrichtung festgelegt wird, wird die Standardachse für diese Ausrichtung zerstört.
Alle Diagrammtypen unterstützen die gleichzeitige Darstellung mehrerer Serien. Die Serien müssen nicht alle die gleiche Anzahl von Zeilen und Spalten enthalten. Die Zeilen- und Spaltenbeschriftungen werden von der ersten hinzugefügten Serie übernommen, sofern sie nicht explizit für die Zeilen- und Spaltenachsen definiert sind.
Achsenformatierer können verwendet werden, um die Linien und Beschriftungen des Wertachsengitters anzupassen. Die Klasse QValue3DAxisFormatter und der QML-Typ ValueAxis3DFormatter bieten Formatierungsregeln für eine lineare 3D-Wertachse. Die Klasse QLogValue3DAxisFormatter und der QML-Typ LogValueAxis3DFormatter bieten Formatierungsregeln für eine 3D-Achse mit logarithmischen Werten.
Polare horizontale Achsen können für Oberflächen- und Streudiagramme verwendet werden, indem die Eigenschaft polar gesetzt wird.
3D-Themen
Ein Thema ist eine integrierte Sammlung von UI-Stil-bezogenen Einstellungen, die auf alle visuellen Elemente eines Diagramms angewendet werden, z. B. die Farben, Schriftarten und Sichtbarkeit der Elemente sowie die Stärke der Beleuchtung und des Umgebungslichts.
Qt Charts wird mit den folgenden vordefinierten Themen geliefert, die als Grundlage für eigene Themen verwendet werden können:
- Qt ist ein helles Thema mit Grün als Grundfarbe.
- Primärfarben ist ein helles Thema mit Gelb als Grundfarbe.
- Digia ist ein helles Thema mit Grau als Grundfarbe.
- Steinmoos ist ein mitteldunkles Thema mit Gelb als Grundfarbe.
- Armeeblau ist ein mittelhelles Thema mit Blau als Grundfarbe.
- Retro ist ein mittelhelles Thema mit Braun als Grundfarbe.
- Ebenholz ist ein dunkles Thema mit Weiß als Grundfarbe.
- Isabelle ist ein dunkles Thema mit Gelb als Grundfarbe.
- Benutzerdefiniert ist das Standardthema, das angepasst werden soll. Weitere Informationen finden Sie unter Default Theme.
Benutzerdefinierte Designs können auch von Grund auf neu erstellt werden.
Wenn ein Diagramm Daten aus mehreren Datenreihen anzeigt, können einige Einstellungen für jede Reihe separat festgelegt werden. So können beispielsweise für verschiedene Ebenen des Diagramms unterschiedliche Farbverläufe festgelegt werden, um das Diagramm realistischer zu gestalten. Ein Beispiel finden Sie unter Oberflächendiagramm-Galerie.
3D-Szenen anpassen
Eine 3D-Szene wird mit Hilfe der Klasse Q3DScene oder dem QML-Typ Scene3D implementiert. Eine Szene enthält eine einzelne aktive Kamera, die mit der Klasse Q3DCamera oder dem Typ Camera3D implementiert wird, und eine einzelne aktive Lichtquelle, die mit der Klasse Q3DLight oder dem Typ Light3D implementiert wird. Die Lichtquelle wird immer im Verhältnis zur Kamera positioniert. Standardmäßig folgt die Position der Lichtquelle automatisch der Kamera.
Die Kamera kann angepasst werden, indem ihre voreingestellte Position, Drehung und Zoomstufe angegeben werden. Ein Beispiel finden Sie unter Einfaches Punktediagramm.
Elemente anpassen
Qt Data Visualization verfügt über vordefinierte Netztypen für Balken, Elemente und Flächen. Der Netztyp bestimmt, wie ein Balken, ein Element oder eine Fläche in einem Diagramm aussieht. Ein benutzerdefiniertes Netz kann als Wavefront OBJ-Geometriedefinitionsdatei angegeben werden. Für mehr Abwechslung kann ein Quaternion für die Mesh-Drehung festgelegt werden.
Zusätzlich zum Anpassen einzelner Elemente kann die Klasse QCustom3DItem oder der QML-Typ Custom3DItem verwendet werden, um benutzerdefinierte Elemente zu Diagrammen hinzuzufügen. Die Elemente haben ein benutzerdefiniertes Netz, Position, Skalierung, Drehung und eine optionale Textur.
Die Klasse QCustom3DVolume und der QML-Typ Custom3DVolume können verwendet werden, um gerenderte Volumenobjekte zu erstellen, die einem Diagramm hinzugefügt werden. Ein gerendertes Volumenobjekt ist eine Box mit einer 3D-Textur. Für das Volumen werden drei Slicing-Ebenen unterstützt, eine entlang jeder Hauptachse des Volumens.
Die Klasse QCustom3DLabel und der QML-Typ Custom3DLabel implementieren benutzerdefinierte Etiketten mit dem angegebenen Text, der Schriftart, der Position, der Skalierung und der Drehung. Die Farben, Ränder und der Hintergrund der Beschriftungen werden durch das aktive Thema bestimmt.
© 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.