文章目录

  • 1、绘制多条曲线
  • 2、绘制柱状图

1、绘制多条曲线

上一节中简单介绍了如何使用QCustomPlot绘制一条简单的曲线,下面将介绍如何通过QCustomPlot绘制多条曲线。
如下是参考官网的代码,绘制两条曲线,代码如下:

void MainWindow::plotDemo2()
{plot=this->ui->widget;//添加第一条曲线plot->addGraph();plot->graph(0)->setPen(QPen(Qt::blue));plot->graph(0)->setBrush(QBrush(QColor(0,0,255,20)));//第二条曲线plot->addGraph();plot->graph(1)->setPen(QPen(Qt::red));//模拟数据点(x,y1)代表第一条曲线,(x,y2)代表第二条曲线QVector<double> x(251),y1(251),y2(251);for(int i=0;i<251;i++){x[i]=i;y1[i]=qExp(-i/150.0) * qCos(i/10.0);y2[i]=qExp(-i/150.0);}//显示上面和右面的坐标轴,但不显示值plot->xAxis2->setVisible(true);plot->xAxis2->setTickLabels(false);plot->yAxis2->setVisible(true);plot->yAxis2->setTickLabels(false);//设置数据曲线的值plot->graph(0)->setData(x,y1);plot->graph(1)->setData(x,y2);//自动调整X,Y坐标范围plot->graph(0)->rescaleAxes(true);plot->graph(1)->rescaleAxes(true);//设置曲线的特性:支持鼠标拖拽、图层缩放、鼠标左键选择图层plot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);//刷新plot->replot();
}

如下是效果图:

每一条曲线都是通过addGraph()来实现的,当我们没有手动设置坐标轴范围时,可以通过rescaleAxes()来自动调整坐标轴范围

2、绘制柱状图

如下是通过QCPBars来绘制柱状图,代码如下:

void MainWindow::plotDemo3()
{//柱状图的X.Y坐标QCPAxis *xAxis=this->ui->widget->xAxis;QCPAxis *yAxis=this->ui->widget->yAxis;QCPBars *bars=new QCPBars(xAxis,yAxis);bars->setAntialiased(true);   //设置抗锯齿bars->setName("柱状图实例");bars->setVisible(true);//设置画笔和画刷bars->setPen(QPen(QColor("#B2F63D")));bars->setBrush(QBrush(QColor("#95EC00")));//坐标轴刻度范围与文字QVector<double>ticks;QVector<QString>labels;ticks<<1<<2<<3<<4<<5<<6<<7;labels<<"C"<<"Python"<<"C++"<<"Java"<<"GO"<<"Rust"<<"VB";QSharedPointer<QCPAxisTickerText> tickerText(new QCPAxisTickerText);tickerText->addTicks(ticks,labels);xAxis->setTicker(tickerText); //设置坐标轴文字xAxis->setTickLabelRotation(60); //设置坐标轴文字旋转xAxis->setSubTicks(false);  //不显示子刻度xAxis->setRange(0,8);xAxis->setLabel("编程语言");xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);yAxis->setRange(0,10000); //设置y轴范围yAxis->setPadding(35);  //设置y轴内边距yAxis->setLabel("学习人数");yAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);QVector<double>dataNum;dataNum<<9500<<8790<<8678<<8437<<4985<<3490<<2920;bars->setData(ticks,dataNum);  //给柱状图设置值
}

效果图如下:

QCustomPlot的使用教程(二)相关推荐

  1. QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现

    QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现 结构 UI部分 代码部分 step1:实现串口数据接受 串口接受数据格式 在`.pro`文件中添加`serialp ...

  2. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...

  3. Konstrukt PHP REST框架 教程二

    Konstrukt PHP REST框架 教程二 入门 - 第2部分 在本教程中,我们假设你已经完成了第一个教程,因为它的基础上产生的代码从该. 谈判的Content-Type 在大多数情况下会发出一 ...

  4. Mac下Android studio 之NDK配置教程(二)

    Mac下Android studio 之NDK配置教程(二) (一)简述 从上一篇NDK配置教程(一) 中,我 简单的阐述了MAC下NDK的基本解压和环境配置步骤. 本节我讲详细描述android s ...

  5. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  6. openlayers地图旋转_OpenLayers教程二:实现简单的地图显示

    本文衔接上一篇文章:不睡觉的怪叔叔:OpenLayers教程二:实现简单的地图显示​zhuanlan.zhihu.com 经过上一篇文章对OpenLayers的简单了解以后,现在让我们来实现一个简单的 ...

  7. 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc

    计算机JAVA教程二讲Java语言基础知识 2.1简单数据类型 2.1.1 标识符和保留字 1.标识符 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier).Java语言 ...

  8. Java 结构体之 JavaStruct 使用教程二 JavaStruct 用例分析

    使用环境 前一篇在介绍 JavaStruct 类时指定了使用库使用环境为 Java 5 及以上,也即开发我们使用的 JDK 版本为1.5及以上就可以了.以下讲解的用例可以直接将 code 直接粘贴到 ...

  9. C#微信公众号开发系列教程二(新手接入指南)

    此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教 ...

最新文章

  1. 【NOIP2010】引水入城
  2. 案发设计与分析 试验一
  3. 财务人员学python有用吗-python在财务里面有用吗
  4. boost::mp11::mp_reverse_fold_q相关用法的测试程序
  5. 关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题
  6. 【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
  7. 32利用文件系统保存数据_网易技术实践|Docker文件系统实战
  8. linux top功能,[每日一题]说说Linux top命令的功能和用法
  9. 出于安全考虑,千万不要绕开 CORS!
  10. 小学期实践心得(2)
  11. cwe_checker初识别
  12. ov7725摄像头--图像中间亮四周暗
  13. uniapp nvue运用map组件实现地图标注以及检索周边地址
  14. 保存图片到相册并打开微信扫一扫
  15. 计算机科学与技术3d仿真设计,三维仿真
  16. PHP实现24节气的计算方法
  17. “资产证券化支持实体经济万里行”启幕 探索实体经济发展新态势
  18. 秋招面试题“背”好了,那简历呢?
  19. 《乔布斯传》--- 地铁系列
  20. SDS(Simple Dynamic String)一个简易动态字符串库

热门文章

  1. (学习笔记2)特征融合
  2. Open Dynamics Engine(ODE)简介
  3. html5表格两列合并_详解html中表格table的行列合并问题解决
  4. 01-先把ET润(Run)起来
  5. 计算机检索高考投档线,高考查询录取
  6. Python - 多线程与多进程
  7. RPL协议、6blr边界路由和6lowpan技术解释
  8. 网络直播系统的架构,基础版直播间搭建 1
  9. libmagic 介绍
  10. 2023 华为 Datacom-HCIE 真题题库 01/12--含解析