一.功能介绍
Qwt、QChart和QCustomPlot是Qt框架下的三个绘图库,它们各有特点,适用于不同的应用场景。
1. Qwt:是一个提供科学相关背景下的图表绘制的GUI元件库。它主要提供了一些基本的二维绘图部件,例如函数图、柱状图、温度计、转轮式的控件,并具有缩放、移动等功能。Qwt支持任何Qt能够支持的系统环境,并且可以兼容Qt4(4.4版本以上)和Qt5版本。Qwt具有较为完善的文档和丰富的实例程序,可以用来作为开发时的参考。在Qwt的最新版本中,提供了一些新的绘图控件,例如在线性坐标和对数坐标间转换的函数,重新设计的旋钮控件和滑动控件等,还提供了对OpenGL的基本支持。
2. QChart:是Qt图表使用图形视图框架以便于集成。QChart类管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示。QChart是一个QGraphicScene中可以显示的QGraphicsWidget。更简单的解决方案是使用方便类QChartView而不是QChart在布局中显示图表。在QML中,使用ChartView类型显示图表。通过使用QPolarChart类(QChart类的专门化)或polar ChartView QML类型(ChartView类型的专门化),某些图表组件也可以表示为极坐标图。可以通过使用主题、修改颜色和属性、隐藏图表组件或设置图表动画来自定义图表的外观。模型映射器允许使用从QAbstractItemModel类派生的数据模型作为图表的数据源。
3. QCustomPlot:是QT下一个方便易用的绘图工具,该绘图库专注于制作美观,出版品质的2D图表。它可以导出为各种格式,如矢量化的PDF文件和光栅化图像,如PNG,JPG和BMP。
总的来说,这三个库分别适用于不同的应用场景。Qwt主要适用于科学相关的图表绘制,QChart可以创建各种类型的图形视图,而QCustomPlot则专注于制作美观的2D图表。
二.对比
美观方面:
Qcustomplot≈Qchart > Qwt
Qcustomplot界面简洁大方;
Qchart界面华丽优美,其中QChart中绘制的线条处不能使用鼠标,所以在数据量大的时候会引响鼠标的缩放、移动图表操作;
Qwt界面老旧,在美观上不如Qcustomplot和Qchart ,并且在使用鼠标移动图表时会产生空白区域。
性能方面:
绘制数据性能:Qchart>Qcustomplot > Qwt
绘制数据数量:Qcustomplot > Qwt>Qchart
测试条件:
处理器: Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
QT版本:QT5.12
画曲线:折线图
qcustomplot:10万点平均耗时14ms,50万点平均耗时18ms,125万点平均耗时23ms;1250万点平均耗时104ms, 12500万点平均耗时960ms
qchart:10万点平均耗时55ms,50万点平均耗时362ms,125万点平均耗时70ms;1250万点平均耗时678ms;
Qwt:10万点平均耗时3ms,125万点平均耗时24ms,1250万点平均耗时150ms;
综上,在画折线图的性能方面qcustomplot是最优选择。
功能方面:
QChart、Qwt功能比较齐全,并且可绘制图表种类多;
qcustomplot在图表种类上、常用功能上较少。
使用方面:
QChart无需配置,主要在安装Qt时勾选就可以,在程序编写时上手较慢,许多功能需要重写;
Qwt安装配置比较复杂;
QCustomPlot体积小、简单易用,上手快,并且QCustomPlot只有两个源文件,可直接添加进工程,更容易直接修改源码。
三.Qcustomplot
官网下载地址:https://www.qcustomplot.com/index.php/download
对比三个绘图库,qcustomplot在绘制大量点的二维曲线上性能优势明显,通过qcustomplot程序合理使用(包括开启硬件加速)及针对项目需求的优化,在实际项目应用中应用qcustomplot做到实时刷新曲线一千万点是没有问题的,甚至设计合理还能做到更高。
博主在项目中就做到了1250万点的实时曲线刷新,同时还做了曲线的实时频谱分析并绘制频曲线图,如果有对提升曲线绘图效率感兴趣的人可以留言进一步沟通~