开源的图表控件QCustomPlot很经典,作者至少是八星斗圣级别,在曲线数据展示这块性能彪悍,总结了一些容易忽略的经验要点。

  • 可以将XY轴对调,然后形成横向的效果,无论是曲线图还是柱状图,分组图、堆积图等,都支持这个特性。
  • 不需要的提示图例可以调用 legend->removeItem 进行移除。
  • 两条曲线可以调用 setChannelFillGraph 设置合并为一个面积区域。
  • 可以关闭抗锯齿 setAntialiased 加快绘制速度。
  • 可以设置不同的线条样式(setLineStyle)、数据样式(setScatterStyle)。
  • 坐标轴的箭头样式可更换 setUpperEnding。
  • 可以用 QCPBarsGroup 实现柱状分组图,这个类在官方demo中没有,所以非常容易忽略。
  • V2.0开始支持数据排序设置,默认是交给QCustomPlot排序,也可以设置setData第三个参数为true表示已经排序过,这样可以绘制往回走的曲线。
  • 频繁绘制数据可以设置排队绘制参数 replot(QCustomPlot::rpQueuedReplot),可以避免重复的replot和提高性能。如果不开启很可能绘制出错。
//对调XY轴,在最前面设置
QCPAxis *yAxis = customPlot->yAxis;
QCPAxis *xAxis = customPlot->xAxis;
customPlot->xAxis = yAxis;
customPlot->yAxis = xAxis;//移除图例
customPlot->legend->removeItem(1);//合并两个曲线画布形成封闭区域
customPlot->graph(0)->setChannelFillGraph(customPlot->graph(1));//关闭抗锯齿以及设置拖动的时候不启用抗锯齿
customPlot->setNoAntialiasingOnDrag(true);
customPlot->graph()->setAntialiased(false);
customPlot->graph()->setAntialiasedFill(false);
customPlot->graph()->setAntialiasedScatters(false);
//设置快速绘制可以大大加快画笔宽度大于1的线条
customPlot->setPlottingHint(QCP::phFastPolylines);//多种设置数据的方法
customPlot->graph(0)->setData();
customPlot->graph(0)->data()->set();//设置不同的线条样式、数据样式
customPlot->graph()->setLineStyle(QCPGraph::lsLine);
customPlot->graph()->setScatterStyle(QCPScatterStyle::ssDot);
customPlot->graph()->setScatterStyle(QCPScatterStyle(shapes.at(i), 10));//还可以设置为图片或者自定义形状
customPlot->graph()->setScatterStyle(QCPScatterStyle(QPixmap("./sun.png")));
QPainterPath customScatterPath;
for (int i = 0; i < 3; ++i) {customScatterPath.cubicTo(qCos(2 * M_PI * i / 3.0) * 9, qSin(2 * M_PI * i / 3.0) * 9, qCos(2 * M_PI * (i + 0.9) / 3.0) * 9, qSin(2 * M_PI * (i + 0.9) / 3.0) * 9, 0, 0);
}
customPlot->graph()->setScatterStyle(QCPScatterStyle(customScatterPath, QPen(Qt::black, 0), QColor(40, 70, 255, 50), 10));//更换坐标轴的箭头样式
customPlot->xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
customPlot->yAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);//设置背景图片
customPlot->axisRect()->setBackground(QPixmap("./solarpanels.jpg"));
//画布也可以设置背景图片
customPlot->graph(0)->setBrush(QBrush(QPixmap("./balboa.jpg")));
//整体可以设置填充颜色或者图片
customPlot->setBackground(QBrush(gradient));
//设置零点线条颜色
customPlot->xAxis->grid()->setZeroLinePen(Qt::NoPen);
//控制是否鼠标滚轮缩放拖动等交互形式
customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);//柱状分组图
QCPBarsGroup *group = new QCPBarsGroup(customPlot);
QList<QCPBars*> bars;
bars << fossil << nuclear << regen;
foreach (QCPBars *bar, bars) {//设置柱状图的宽度大小bar->setWidth(bar->width() / bars.size());group->append(bar);
}
//设置分组之间的间隔
group->setSpacing(2);//绘制往回走的曲线
QVector<double> keys, values;
keys << 0 << 1 << 2 << 3 << 4 << 5 << 4 << 3;
values << 5 << 4 << 6 << 7 << 7 << 6 << 5 << 4;
customPlot->graph(0)->setData(keys, values, true);//频繁绘制数据开启排队绘制可以提高性能
customPlot->replot(QCustomPlot::rpQueuedReplot);QCPAxis *axis = customPlot->xAxis;
double lower = axis->range().lower;
double upper = axis->range().upper;
double origin = (upper - lower) / 2;
//设置刻度线按照设置优先而不是可读性优先
axis->ticker()->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
//设置原点值为范围值的中心点
axis->ticker()->setTickOrigin(origin);

【QT】QCustomPlot图表控件相关推荐

  1. 微软图表控件MsChart

    转自:http://tech.ddvip.com/2008-11/122640479791375.html 昨天在网上看到了微软发布了.NET 3.5框架下的图表控件,第一时间抓下来看了一下,发觉功能 ...

  2. 跨平台图表控件TeeChart使用教程:导入XML数据

    2019独角兽企业重金招聘Python工程师标准>>> TeeChart的最新版中包含了一个自动加载XML数据的新组件.这个组件的名字叫做TTeeXMLSource,用户可以在Tee ...

  3. 漂亮好用的ASP.NET图表控件 免费的

    绝对免费,绝对好用,中文支持绝对好,轻松生成漂亮的2D和3D图表. 这个控件是我找到的免费图表控件中非常好的一个,我一直在关注这个控件,虽然功能未必比得上商业的图表控件强大,但是绝对好用,绝对免费,他 ...

  4. labview波形图两个游标,LabVIEW数据可视化:使用波形图表控件逐点显示曲线的方法...

    LabVIEW平台中提供了强大的2D/3D数据的可视化控件,如波形图.波形图表.XY图.强度图.数字波形图.混合信号图.二维/三维图片及用于特殊用途的极坐标图.Smith图.雷达图控件等. 上篇文章: ...

  5. 微软图表控件MsChart使用说明[转]

    微软图表控件MsChart使用说明 建立一个.NET3.5的Web项目,像使用普通控件一样拖放到要使用的Web界面即可.初步研究了一下,整个图形控件主要由以下几个部份组成: 1.Annotations ...

  6. 基于.NET的图表控件解决方案

    2019独角兽企业重金招聘Python工程师标准>>> .netCHARTING是一个非常棒的.NET图表控件,对中文支持非常好,而且操作方便,开发快速,既有webform 也有wi ...

  7. QT中树控件QTreeView开发实例

    转自:http://mobile.51cto.com/symbian-268700.htm 本文讲解了QT中树控件QTreeView开发实例,对于QTreeView没有过多的讲解,那么不说废话了,看代 ...

  8. 如何用图表控件实现点击图例图标隐藏图表序列

    为了提高开发效率,第三方商用图表控件越来越被程序员广泛使用,由于第三方商用控件产品的可重用性,可以帮助企业节约GUI工程师的压力而实现灵活,绚丽的图表. 在阅读以下文章之前先下载安装试用版: Fusi ...

  9. WPF 曲线图表控件(自制)(二)

    原文:WPF 曲线图表控件(自制)(二) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/775218 ...

  10. 移动界面控件Essential Studio for Mobile MVC图表控件解析

    企业级的用于移动应用开发的界面控件Essential Studio for Mobile MVC中的Essential Chart for Mobile MVC是一款基于HTML 5的高性能且轻量化的 ...

最新文章

  1. 0基础学python-如何从零基础自学Python?
  2. 5月30日,社区活动:SharePoint技术峰会
  3. cnblogs第一篇
  4. Hbase0.98的环境搭建
  5. QPS/TPS/并发量/系统吞吐量概念和公式
  6. WebBrowser加载完毕后再往下执行
  7. MySQL存储树形数据优化技笔记
  8. firefox 扩展_如何检查您的扩展程序是否将停止与Firefox 57一起使用
  9. 定时器和多线程的不同
  10. 嵌入式Linux环境变量如何参与程序运行
  11. mongodb,Mysql,redis基础教程
  12. FreeFileSync - 最佳免费开源文件夹同步备份软件 (FTP/局域网/移动硬盘)
  13. [转]coolfire黑客入门教程系列之(二)
  14. Linux下rootkit病毒专杀工具,linux系统下检测rootkit工具
  15. Java实现观察者模式
  16. javaee 学习书籍推荐
  17. 多语言机器翻译 | (1)多语言翻译模型简介
  18. Blackhat2017:如何利用PostScript语言入侵打印机
  19. 关于vlc编解码器暂不支持: VLC 无法解码格式“MIDI” (MIDI Audio)解决
  20. 华为云弹性云服务器助力打造更安全可靠、灵活高效的云空间

热门文章

  1. Unity中表格制作与动态生成
  2. python课程设计汽车销售管理系统_汽车销售管理系统--课程设计
  3. Excel连接MySQL数据库进行数据的可视化
  4. arcgispython空间插值_[学习总结]如何利用GIS建模批量处理气象数据-以micaps 第四类数据空间插值为例-专业气象研究-气象家园_气象人自己的家园...
  5. java中的math pow,Java Math.pow(a,b)时间复杂度
  6. android webview 跳转到浏览器,Android WebView或手机浏览器打开连接问题解决办法总结...
  7. 专业绘图(Visio 2016)实战视频课程-专题视频课程
  8. 杭电OJ 1094(C++)
  9. QT 实现 RTSP 视频流服务器
  10. 计算机专业学微机原理与接口技术,信息技术学院计算机科学与技术专业《微机原理与接口技术.doc...