Qt Data Visualization 概述
Qt Data Visualization 模块为学术研究和医疗等分析要求较高的行业提供了一种开发快速响应、复杂和动态三维可视化的方法。 Qt 3D 数据可视化提供三维条形、散点图和曲面可视化。结合用户交互和实时三维绘图可视化,可以创建有效利用空间的用户界面。在三维和二维展示之间进行切换,可以真正发挥三维在数据可视化方面的价值。
可以使用预定义的主题或定义新的主题来定制图表的外观和感觉。此外,还可以通过指定摄像机的设置来定制场景,并通过使用预定义或用户定义的网格来定制单个项目。
Qt Data Visualization Qt Visualization 提供现成的数据代理,可用于可视化来自 Qt 项目模型和高度图的数据。每种图形类型都有一个基本代理类型,可接受适合该可视化格式的数据。更多信息,请参阅Qt Data Visualization 数据处理。
最终用户可以通过多种方式与图形显示的数据进行交互,包括旋转图形、放大和缩小数据、选择项目以及查看三维数据的二维切片以提高可读性。更多信息,请参阅Qt Data Visualization 与数据交互。
注意: 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 Migration from Qt DataVisualization。
图形类型
Qt Data Visualization 模块提供以下三维图形类型:
QAbstract3DGraph 类是QWindow 的子类,并为实现不同图形类型的子类提供渲染循环:Q3DBars、Q3DScatter 和Q3DSurface 。图形类型决定了数据的显示方式。
三维条形图
三维条形图将数据显示为按类别分组的三维条形图。Q3DBars 类用于创建图形,QBar3DSeries 和QBarDataProxy 类用于为图形设置数据,以及控制图形的可视属性,如绘制模式和阴影。在 QML 中,相应的类型是Bars3D,Bar3DSeries, 和BarDataProxy 。
更多信息,请参阅How to construct a minimal Q3DBars graph 和简单条形图示例。
三维散点图
3D 散点图以点集合的形式显示数据。Q3DScatter 类用于创建图形,QScatter3DSeries 和QScatterDataProxy 类用于为图形设置数据,以及控制图形的可视化属性。在 QML 中,相应的类型是Scatter3D,Scatter3DSeries, 和ScatterDataProxy 。
更多信息,请参阅How to construct a minimal Q3DScatter graph 和简单散点图示例。
三维曲面图
3D 曲面图以 3D 曲面图的形式显示数据。Q3DSurface 类用于创建图形,QSurface3DSeries 和QSurfaceDataProxy 类用于为图形设置数据,以及控制图形的可视化属性。在 QML 中,相应的类型是Surface3D,Surface3DSeries, 和SurfaceDataProxy 。
更多信息,请参阅How to construct a minimal Q3DSurface graph 、Graph Gallery 和Surface Graph Gallery示例。
使用 OpenGL 渲染数据
建议使用 OpenGL 2.1 或更高版本进行数据渲染。如果使用 OpenGL ES2(包括 Windows 中的角度构建),则不支持以下功能:
- 阴影
- 反锯齿
- 曲面的平着色
- 体积对象,因为它们使用 3D 纹理
只有 OpenGL ES2 仿真可用于软件渲染器(即使用QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL) 时)。
选择渲染模式
在 QML 中,您可设置AbstractGraph3D.RenderingMode 属性,以确定图形是直接渲染在窗口背景上,还是渲染到屏幕外表面,然后在正常的 QML 项目渲染过程中绘制。
背景渲染模式比间接渲染模式性能稍好,但代价是非标准 QML 行为。例如,图形不服从 QML 项的 Z 排序,也不能部分透明。因此,改变渲染模式是一个性能与质量的问题。
Qt Quick 在数据渲染中使用专用场景图,因此是数据可视化的最佳选择。
三维坐标轴
Qt Data Visualization 支持以下轴类型:
- 值轴
- 类别轴
轴可以设置为显示直线或网格。这两种轴类型都是QAbstract3DAxis 类或AbstractAxis3D QML 类型的特化。
值轴可以给定一个值范围,以及划分该范围的段和子段计数。每个分段之间都会绘制标签。在每个段和每个子段之间绘制网格线。值轴使用QValue3DAxis 类或ValueAxis3D QML 类型实现。
类别轴具有已命名的范围和可调整的范围宽度。根据轴范围定义的数据窗口大小,它被分为大小相等的类别。如果提供了标签,则会在类别的位置上绘制标签。如果可见,则在类别之间绘制网格线。类别轴使用QCategory3DAxis 类或CategoryAxis3D QML 类型实现。
如果没有为图表明确设置坐标轴,则会创建没有标签的临时默认坐标轴。这些默认坐标轴可以通过坐标轴访问器进行修改,但一旦为特定方向明确设置了坐标轴,该方向的默认坐标轴就会被销毁。
所有图形类型都支持同时显示多个系列。所有系列不需要包含相同数量的行和列。行和列标签取自第一个添加的序列,除非已为行坐标轴和列坐标轴明确定义。
坐标轴格式器可用于自定义值坐标轴网格线和标签。QValue3DAxisFormatter 类和ValueAxis3DFormatter QML 类型提供了线性值 3D 轴的格式规则。QLogValue3DAxisFormatter 类和LogValueAxis3DFormatter QML 类型提供了对数值 3D 轴的格式规则。
通过设置polar 属性,极坐标水平轴可用于曲面图和散点图。
三维主题
主题是应用于图表所有视觉元素的用户界面风格相关设置的内置集合,例如元素的颜色、字体和可见性,以及光线和环境光的强度。
Qt Charts 图形用户界面》自带以下预定义主题,可作为自定义主题的基础:
- Qt是一款以绿色为基色的浅色主题。
- 三原色是以黄色为基色的浅色主题。
- Digia是以灰色为基色的浅色主题。
- Stone moss是一款以黄色为基色的中深色主题。
- 军蓝(Army Blue)是一款中浅色主题,基色为蓝色。
- 复古是一款中浅色主题,基色为棕色。
- 乌木色是一款以白色为基调的深色主题。
- Isabelle是以黄色为基色的深色主题。
- 用户自定义是默认主题,可以自定义。更多信息,请参阅Default Theme 。
自定义主题也可以从头开始创建。
如果图表显示多个数据序列的数据,可以为每个序列分别指定一些设置。例如,可以为图表的不同层指定不同的渐变效果,使其看起来更逼真。有关示例,请参阅曲面图库。
自定义三维场景
三维场景是通过使用Q3DScene 类或Scene3D QML 类型实现的。一个场景包含一个活动相机(通过使用Q3DCamera 类或Camera3D 类型实现)和一个活动光源(通过使用Q3DLight 类或Light3D 类型实现)。光源的位置始终与摄像机相关。默认情况下,光源位置会自动跟随摄像机。
摄像机可通过指定预设位置、旋转和缩放级别进行自定义。有关示例,请参阅简单散点图。
自定义项目
Qt Data Visualization 自定义项目 "为条形图、项目和曲面提供了预定义的网格类型。网格类型决定了条形图、项或曲面在图形上的外观。用户定义的网格可以指定为 Wavefront OBJ 几何定义文件。为实现更多变化,可为网格旋转设置四元数。
除了自定义单个项目外,还可使用QCustom3DItem 类或Custom3DItem QML 类型将自定义项目添加到图形中。这些项目具有自定义网格、位置、缩放、旋转和可选纹理。
QCustom3DVolume 类和Custom3DVolume QML 类型可用于创建添加到图形中的体积渲染对象。体呈现对象是一个带有三维纹理的方框。体支持三个切平面,沿体的每个主轴各一个。
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.