【组件介绍】FITKPlotWindow

一、组件简介

二维图表组件FITKPlotWindow基于Qwt开发,是用于直观二维数据的组件。目前的二维图表组件支持四种类型的图表,分别为标准直角坐标图、柱状图、频谱图和极坐标图。该组件的数据渲染效果示例如下:

二、主要接口

组件中针对不同的数据渲染方式各有差异,但遵循相同的类组织结构,对于每种图表的生成,均通过下面四个类实现核心的业务功能:

****图表窗口类:****主要用于创建窗口,其包含一个图表属性类指针和一个数据管理类指针,分别用于设定窗口属性和管理数据。

****图表属性类:****主要用于指定图表的固有属性( 例如轴标题等),并包含与界面表现形式相关的所有接口。

****数据属性类:****主要用于创建图表数据并设计数据样式(例如曲线颜色、线型,柱状图颜色等)。

****数据管理类:****主要用于添加数据或删除数据。

具体相关类如下:

|---------------------------|---------------|
| 类名 | |
| FITKXYPlotWindow | 标准直角坐标图的图表窗口类 |
| FITKXYPlotProperty | 标准直角坐标图的图表属性类 |
| FITKXYCurveDrawProp | 标准直角坐标图的数据属性类 |
| FITKXYCurveDrawManager | 标准直角坐标图的数据管理类 |
| FITKBarChartWindow | 柱状图的图表窗口类 |
| FITKBarChartProperty | 柱状图的图表属性类 |
| FITKBarChartDrawProp | 柱状图的数据属性类 |
| FITKBarChartDrawManager | 柱状图的数据管理类 |
| FITKSpectrogramWindow | 频谱图的图表窗口类 |
| FITKSpectrogramProperty | 频谱图的图表属性类 |
| FITKSpectrogramDrawPro | 频谱图的数据属性类 |
| FITKSpectrogramManager | 频谱图的数据管理类 |
| FITKPolarPlotWindow | 极坐标图的图表窗口类 |
| FITKPolarPlotProperty | 极坐标图的图表属性类 |
| FITKPolarCurveDrawProp | 极坐标图的数据属性类 |
| FITKPolarCurveDrawManager | 极坐标图的数据管理类 |

三、使用过程(以直角坐标图为例)

创建图表一般包含以下四步:

  • 创建图表窗口
  • 设置图表属性
  • 构造图表专有数据对象,并设置数据到专有数据对象
  • 将专有数据对象添加到图表

0.组件加载

我们将通过图表窗口接口类FITKPlotWindowsInterface来创建图表窗口,在使用图表窗口接口类之前,需要提前将图表窗口接口类添加到组件工厂,添加代码如下:

复制代码
1.  QList<AppFrame::FITKComponentInterface *> 
2.                               ComponentFactory::createComponents()
3.  {
4.     // 自定义组件列表
5.		QList<AppFrame::FITKComponentInterface *> componentList;
6.		//****创建的其他组件********
7.		// ............
8.		//二维图表窗口接口
9.		componentList << new Plot:: FITKPlotWindowsInterface;
10.
11. 	return componentList;
12. }

1.创建直角坐标窗口

复制代码
1.  //获取二维图表窗口接口
2.  Plot::FITKPlotWindowsInterface* PlotWindows = FITKAPP->getComponents()->getComponentTByName<Plot::FITKPlotWindowsInterface>("FITKPlotWindowsInterface");
3.  //创建图表窗口(直角坐标图的类型为0)
4.  Plot::FITKXYPlotWindow *plotWidget = 
dynamic_cast<Plot::FITKXYPlotWindow*>(PlotWindows->getWidget(0));

//add plotWidget to a window

++创建窗口后还要将++ ++plotWidget++ ++添加到自己需要的窗口位置++

2.设置窗口属性

复制代码
1.//设置窗口标题
2.plotWidget->getPlotProperty()->setTitle("Title ");
3.//设置XY轴名称
4.plotWidget->getPlotProperty()->setAxisName("Redu","Time");
5.//将图例挪动到窗口右侧
6.plotWidget->getPlotProperty()->setLegendPlace(1);

还有其它设置窗口的成员方法,具体方法可以到每种图表的窗口属性类中查看。

3.添加绘图数据

添加数据时,首先要先创建一个对应图表类型的数据属性类对象,直角坐标图的数据属性类为FITKXYCurveDrawProp,这里我们使用该类来创建曲线数据对象CurveData,然后给CurveData设置数据及样式,代码如下:

复制代码
1.//创建数据属性对象
2.Plot::FITKXYCurveDrawProp* CurveData = new Plot::FITKXYCurveDrawProp();
3.//设置曲线颜色
4.CurveData->setColor(QColor(255,0,0));
5.//设置x轴坐标和y轴坐标
6.QVector<double> xData {10,20,30,40,50,60};
7.QVector<double> yData {10,20,35,40,45,60};
8.//添加 曲线名称"sd",xData:x轴坐标,yData:y轴坐标,xy轴坐标个数要一致
9.//如果添加失败, setData()会返回false
10.CurveData->setData("sd", xData, yData);

最后别忘了更新窗口画面,代码如下

复制代码
1.//获取曲线管理器并添加曲线到图表窗口
2.plotWidget->getCurveManager()->appendGraphObj(CurveData);
3.//更新画布
4.plotWidget->updataCanvas();

此时窗口如下:

四、应用效果

该组件主要用于后处理,二维数据可视化,以及求解过程的残差监控。组件应用效果如下:

相关推荐
名字还没想好☜12 小时前
Python 的 __call__ 实战:让实例像函数一样被调用,做带状态计数器、缓存器与可配置策略
开发语言·后端·python·缓存·编程语言
cpolar技术支持12 小时前
AI Agent 跑半小时就忘目标?用检查点与任务账本做可恢复长任务,cpolar 分享只读时间线
python·sqlite·cpolar·ai agent·任务恢复
做萤石二次开发的哈哈12 小时前
视频汇集平台模板上线萤石蓝海AIoT一站式工作台:多品牌摄像机+NVR统一接入,GB/T28181国标级联实现工程施工多方视频调度(附部署教程)
大数据·人工智能·物联网·音视频·萤石开放平台·蓝海aiot一站式工作台·aiot开发
starzy199012 小时前
Flink高级之Pattern API代码实现:序列语义、循环约束与匹配策略
大数据·flink
张小姐的猫12 小时前
【AI大模型接入SDK】 —— SQLite上手
linux·开发语言·c++·人工智能·python·log4j
雨辰AI12 小时前
信创多租户项目 9 大踩坑|数据隔离失效、权限越权终极解决(金仓 / 达梦 / 高斯全库适配)
java·大数据·数据库·后端
529宝宝起名网12 小时前
用 Python 实现基于字源特征的名字文化评分算法:从六书部首到文化寓意的多维度评分模型
python
努力学习的代码小白12 小时前
mem0源码学习03
python
码流子12 小时前
2026 图像数据标注工具横评:LabelImg / CVAT / Label Studio / X-AnyLabeling / 国产Web平台,到底怎么选?
大数据·人工智能·算法
绿智校园12 小时前
拉孚智慧园区深度解析:全栈自研 AIoT 底座如何破解存量园区数字化难题
信息可视化