Qt三维图表模块 -- Data Visualization 学习记录

Qt三维图表模块 ----- Data Visualization
Qt数据可视化模块提供了一种将三维图形中的数据可视化为条形图、散点图和曲面图的方法。它对于可视化深度图和大量快速变化的数据特别有用,如从多个传感器接收到的数据。图形的外观和感觉可以通过使用主题或添加自定义项目和标签来定制。
Qt数据可视化建立在Qt5和OpenGL上,以利用硬件加速和QtQuick2。

如果打算在应用程序中使用Qt数据可视化C++类,请使用以下包括和使用指令:

 #include <QtDataVisualization>

  using namespace QtDataVisualization;

如果只使用这个模块中的几个类,建议只包括这些特定的类,而不是整个模块。

要链接到Qt数据可视化模块,请将这行添加到qmake项目文件中:

 QT += datavisualization

使用说明:

三维柱状图 Q3DBars
图表:
序列:QBar3DSeries
坐标轴:QValue3DAxis 数值型坐标轴,
QCategory3DAxis 文字型坐标轴

数据代理类:QBarDataProxy类是三维条形图的数据代理。条形图数据代理处理添加、插入、更改和删除数据行。数据数组是QBarDataItem实例的向量(行)列表。每一行可以包含不同数量的项,甚至可以为空。QBarDataProxy获取传递给它的所有QtDataVisualization::QBarDataRow对象的所有权,无论是直接的还是在QtDataVisualization::QBarDataArray容器中。如果在将数组添加到代理服务器后,使用条形数据行指针直接修改数据,则必须发出适当的信号来更新图。
QBarDataProxy可以选择跟踪行和列标签,Q类3DAxis可以利用这些标签来显示轴标签。行和列标签与数据分别存储在一个单独的数组中,而行操作方法提供了不影响行标签的替代版本。这就可以选择使用与数组中数据的位置相关,而不是与数据本身相关的行标签。

一个图中可以有多个同系列的序列,但不能有不同类型的序列。
示例:

#include <QtDataVisualization>

  using namespace QtDataVisualization;

  int main(int argc, char **argv)
  {
   
      QGuiApplication app(argc, argv);
//首先,构造一个Q3DBars的实例。由于在本例中将图作为顶级窗口运行,需要清除Qt::帧窗口Hint标志,默认设置:
      Q3DBars bars;
      bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint)
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QtDataVisualizationQt中的一个模块,用于可视化数据,包括3D图形和2D图形。其中,三维散点图是其中的一种类型,可以用于展示三维数据中的散点分布情况。 使用QtDataVisualization绘制三维散点图的步骤如下: 1. 创建一个Q3DScatter对象,用于展示三维散点图。 2. 创建一个QScatterDataArray对象,用于存储散点数据。 3. 将散点数据添加到QScatterDataArray对象中。 4. 创建一个QScatterDataProxy对象,用于将散点数据与Q3DScatter对象关联。 5. 设置Q3DScatter对象的坐标轴范围、主题、标题等属性。 6. 将Q3DScatter对象添加到QWidget中进行展示。 下面是一个简单的示例代码,用于展示如何使用QtDataVisualization绘制三维散点图: ``` #include <QtWidgets/QApplication> #include <QtDataVisualization/Q3DScatter> #include <QtDataVisualization/QScatterDataProxy> #include <QtDataVisualization/QScatterDataArray> using namespace QtDataVisualization; int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建一个Q3DScatter对象 Q3DScatter *scatter = new Q3DScatter(); // 创建一个QScatterDataArray对象 QScatterDataArray dataArray; // 添加散点数据到QScatterDataArray对象中 for (float x = -10.0f; x <= 10.0f; x += 0.5f) { for (float y = -10.0f; y <= 10.0f; y += 0.5f) { for (float z = -10.0f; z <= 10.0f; z += 0.5f) { dataArray << QVector3D(x, y, z); } } } // 创建一个QScatterDataProxy对象,并将散点数据与Q3DScatter对象关联 QScatterDataProxy *proxy = new QScatterDataProxy(); proxy->addItems(dataArray); scatter->addSeries(proxy); // 设置Q3DScatter对象的坐标轴范围、主题、标题等属性 scatter->activeTheme()->setType(Q3DTheme::ThemeEbony); scatter->axisX()->setTitle("X Axis Title"); scatter->axisY()->setTitle("Y Axis Title"); scatter->axisZ()->setTitle("Z Axis Title"); // 将Q3DScatter对象添加到QWidget中进行展示 QWidget *container = QWidget::createWindowContainer(scatter); container->setMinimumSize(800, 600); container->setWindowTitle("QtDataVisualization - 3D Scatter"); container->show(); return a.exec(); } ``` 运行该示例代码,可以得到一个包含了大量散点的三维散点图,如下图所示: ![QtDataVisualization - 3D Scatter](https://blog.csdn.net/qq_41453285/article/details/107261516)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值