QCustomPlot的了解

(一)QCustomPlot常见属性设置、多曲线绘制、动态曲线绘制、生成游标、矩形放大等功能实现-CSDN博客

关键代码:

QT       += core gui printsupport

使用上面文章中的代码跑起来的程序效果图:

我的学习过程: 

最开始初始化后:QCustomPlot对象显示图:

1.x轴名称和刻度值

    m_Multichannel->xAxis->setLabel("x轴");
    m_Multichannel->xAxis->setNumberFormat("f");                      //x轴刻度值格式

2. 刻度值精度

m_Multichannel->xAxis->setNumberPrecision(3);                     //刻度值精度

 

3. x轴标签的字体

m_Multichannel->xAxis->setLabelFont(QFont(font().family(),20));    //设置标签字体大小

4. x轴刻度数量和刻度范围

m_Multichannel->xAxis->ticker()->setTickCount(11);                //刻度数量
m_Multichannel->xAxis->setRange(0,10,Qt::AlignLeft);              //范围
0---9
其实一共11个刻度
0,1,2,3,4
5,6,7,8,9
10

 

5. x轴刻度范围

m_Multichannel->xAxis->setRange(0,20,Qt::AlignLeft);              //范围
0---20
11个刻度

6. x轴刻度范围

m_Multichannel->xAxis->setRange(0,30,Qt::AlignLeft);    

0---30

11个刻度

 

7. x轴属性集合

    m_Multichannel->xAxis->ticker()->setTickCount(21);                //刻度数量m_Multichannel->xAxis->setNumberFormat("f");                      //x轴刻度值格式m_Multichannel->xAxis->setNumberPrecision(0);                     //刻度值精度m_Multichannel->xAxis->setRange(0,30,Qt::AlignLeft);              //范围0---3021个刻度

不知道为什么,显示出来是这样:

8. x轴子刻度长度

m_Multichannel->xAxis->setSubTickLength(0,0);                     //子刻度长度
  setSubTickLength(int inside, int outside)Sets the length of the subticks in pixels. \a inside is the length the subticks will reach insidethe plot and \a outside is the length they will reach outside the plot. If \a outside is greaterthan zero, the tick labels and axis label will increase their distance to the axis accordingly,so they won't collide with the ticks.

 以像素为单位设置子刻度的长度。

inside是子刻度将到达的图表内的长度
outside是它们到达plot外的长度。

如果outside>0,刻度label和轴label将相应地增加到轴的距离,
这样它们就不会和ticks相撞。

plot:图表

 

9.  x轴子刻度长度

m_Multichannel->xAxis->setSubTickLength(5,0);                     //子刻度长度

10.  x轴子刻度长度

m_Multichannel->xAxis->setSubTickLength(20,0);                     //子刻度长度

11.  x轴子刻度长度

m_Multichannel->xAxis->setSubTickLength(0,20);                     //子刻度长度

12.  x轴子刻度长度

m_Multichannel->xAxis->setSubTickLength(10,10);                     //子刻度长度

13. x轴和y轴

    m_Multichannel=ui->widget;QSharedPointer<QCPAxisTickerFixed> intTicker_M(new QCPAxisTickerFixed);intTicker_M->setTickStep(1);intTicker_M->setScaleStrategy(QCPAxisTickerFixed::ssMultiples);m_Multichannel->xAxis->setTicker(intTicker_M);m_Multichannel->xAxis->setLabel("x轴");m_Multichannel->xAxis->ticker()->setTickCount(11);                //刻度数量m_Multichannel->xAxis->setNumberFormat("f");                      //x轴刻度值格式m_Multichannel->xAxis->setNumberPrecision(0);                     //刻度值精度m_Multichannel->xAxis->setLabelFont(QFont(font().family(),20));    //设置标签字体大小m_Multichannel->xAxis->setRange(0,10,Qt::AlignLeft);              //范围m_Multichannel->xAxis->setSubTickLength(0,0);                     //子刻度长度m_Multichannel->yAxis->setNumberFormat("f");m_Multichannel->yAxis->setNumberPrecision(2);m_Multichannel->yAxis->setLabel("y轴");m_Multichannel->yAxis->setLabelFont(QFont(font().family(),10));m_Multichannel->yAxis->setRange(0,5);m_Multichannel->yAxis->setTickLength(10,5);

14. 背景

QCustomPlot绘图类详解(大白话)-CSDN博客

ui->plotWidget->setBackground(QBrush(QColor("#404040")));

15. 坐标轴标签颜色

       ui->plotWidget->xAxis->setLabelColor(QColor(Qt::red));ui->plotWidget->yAxis->setLabelColor(QColor(Qt::red));

16. 坐标轴数字标签颜色

       ui->plotWidget->xAxis->setTickLabelColor(QColor(Qt::green));ui->plotWidget->yAxis->setTickLabelColor(QColor(Qt::green));

17. 坐标轴基线颜色

       ui->plotWidget->xAxis->setBasePen(QPen(QColor(Qt::yellow), 2, Qt::SolidLine));ui->plotWidget->yAxis->setBasePen(QPen(QColor(Qt::yellow), 2, Qt::SolidLine));

18. 坐标轴tick颜色

       ui->plotWidget->xAxis->setTickPen(QPen(QColor("#ff00ff")));ui->plotWidget->yAxis->setTickPen(QPen(QColor("#ff00ff")));

19. 坐标轴subtick颜色

       ui->plotWidget->xAxis->setSubTickPen(QPen(QColor("#00ffff")));ui->plotWidget->yAxis->setSubTickPen(QPen(QColor("#00ffff")));

20. grid()颜色

       ui->plotWidget->xAxis->grid()->setPen(QPen(QColor(Qt::darkRed), 1, Qt::DotLine));ui->plotWidget->yAxis->grid()->setPen(QPen(QColor(Qt::darkGreen), 1, Qt::DotLine));

21. 示例1

       #define PT_CNT       200    // 点数QVector<double> keys, values;for (int i = 1; i <= PT_CNT; i++){keys.push_back(i);values.push_back(rand() % 100 - 10);}ui->plotWidget->addGraph();ui->plotWidget->graph(0)->addData(keys, values);ui->plotWidget->graph(0)->setPen(QColor(Qt::blue));ui->plotWidget->graph(0)->setAntialiasedFill(true);ui->plotWidget->replot();

22. 刷新图层

    ui->plotWidget->graph(0)->data()->clear();ui->plotWidget->replot();

重新添加数据:

    QVector<double> keys, values;for (int i = 1; i <= PT_CNT; i++){keys.push_back(i);values.push_back(rand() % 100 - 10);}ui->plotWidget->graph(0)->addData(keys, values);ui->plotWidget->graph(0)->setPen(QColor(Qt::blue));ui->plotWidget->graph(0)->setAntialiasedFill(true);ui->plotWidget->replot();

23. 拖拽+缩放

ui->plotWidget->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);

24. qcustomplot的帮助文档

我希望在QtCreator中使用qcustomplot的帮助文档,可以参考下面的文章。

QCustomPlot使用手册(一)_qcustom手册-CSDN博客

【QCustomPlot】1.1 - Qt .qch帮助文档导入使用-CSDN博客

25.示例2

参考:QCustomPlot使用-CSDN博客

      //最开始初始化 for (int i=0; i<101; ++i){double m,m1;m= i/50.0 - 1;m1 = m*m;x<<m;x1<<m;y<<m1;y1<<-m1;}one=ui->plotWidget->addGraph();init_graph(0);two=ui->plotWidget->addGraph();ui->plotWidget->graph(1)->addData(x1, y1);ui->plotWidget->graph(1)->setPen(QColor(Qt::red));ui->plotWidget->graph(1)->setAntialiasedFill(true);ui->plotWidget->replot();init_graph(1);
//初始化图层
void MainWindow::init_graph(int current_index)
{if(current_index==0){ui->plotWidget->graph(current_index)->addData(x, y);ui->plotWidget->graph(current_index)->setPen(QColor(Qt::blue));}else {ui->plotWidget->graph(current_index)->addData(x1, y1);ui->plotWidget->graph(current_index)->setPen(QColor(Qt::red));}ui->plotWidget->graph(current_index)->setAntialiasedFill(true);ui->plotWidget->replot();
}//清理图层
void MainWindow::on_pushButton_clicked()
{int current_index=ui->spinBox->value();ui->plotWidget->graph(current_index)->data()->clear();ui->plotWidget->replot();
}
//添加数据
void MainWindow::on_pushButton_2_clicked()
{int current_index=ui->spinBox->value();init_graph(current_index);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/838479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家用充电桩远程监控安全管理系统解决方案

家用充电桩远程监控安全管理系统解决方案 在当今电动汽车日益普及的背景下&#xff0c;家用充电桩的安全管理成为了广大车主关注的重点问题。为了实现对充电桩的高效、精准、远程监控&#xff0c;一套完善的家用充电桩远程监控安全管理系统解决方案应运而生。本方案旨在通过先…

如何去除字符串两侧的空白字符?

TRIM函数会去掉字符串左侧和右侧的空格&#xff0c;语法是&#xff1a;TRIM(字符串) excel中&#xff0c;TRIM函数能去掉字符串左侧和右侧的空格&#xff0c;它的ASCII码是32。 以下设定一个字符串组合&#xff0c;它的第一个字符中空格&#xff0c;最后一个字符是换行符 &q…

Python专题:十七、做个小游戏

终端小游戏 1、根据题库内容出单选题 2、提示作答&#xff0c;并给结果 思路 列表 保存题目 字典 保存题干&#xff0c;选项和答案 遍历 题目列表用于展示 input函数 等待用户输入 判断输入&#xff0c;并继续提示 计算正确率并打印 题库…

oracle不得不知道的sql

一、oracle 查询语句 1.translate select translate(abc你好cdefgdc,abcdefg,1234567)from dual; select translate(abc你好cdefgdc,abcdefg,)from dual;--如果替换字符整个为空字符 &#xff0c;则直接返回null select translate(abc你好cdefgdc,abcdefg,122)from dual; sel…

【Linux进程通信 —— 管道】

Linux进程通信 —— 管道 进程间通信介绍进程间通信的概念进程间通信的目的进程间通信的本质进程间通信的分类 管道什么是管道匿名管道匿名管道的原理pipe用fork来共享管道原理站在文件描述符角度-深度理解管道站在内核角度-管道本质管道读写规则管道的特点管道的四种特殊情况管…

2024软件测试必问的常见面试题1000问!

01、您所熟悉的测试用例设计方法都有哪些&#xff1f;请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答&#xff1a;有黑盒和白盒两种测试种类&#xff0c;黑盒有等价类划分法&#xff0c;边界分析法&#xff0c;因果图法和错误猜测法。白盒有逻辑覆盖法&…

三子棋游戏

1、实现三子棋 test.c //测试游戏的逻辑 game.c //游戏代码的实现 game.h //游戏代码的声明&#xff08;函数声明&#xff0c;符号定义&#xff09; 1、 在主函数里实现&#xff0c;首先有个界面&#xff0c;让玩家选择是否玩游戏。上来就先打印菜单&#xff0c;用do ... …

优秀测试的核心能力!2招高效定位分析BUG!

之所以写这一篇文章&#xff0c;是突然想起来曾经在测试过程中被开发嘲讽过&#xff0c;事情是这样的&#xff0c;当时发现了一个疑似前端的Bug就草草提交到了禅道&#xff0c;结果刚来的女前端看到了就有点生气地问我为啥不查清到底是前后端问题就直接派给她前端了&#xff0c…

【python量化交易】—— Alpha选股策略 - Qteasy自定义交易策略【附源码】

使用qteasy创建并回测Alpha选股交易策略 使用qteasy创建并回测Alpha选股交易策略策略思想第一种自定义策略设置方法&#xff0c;使用持仓数据和选股数据直接生成比例交易信号PS信号&#xff1a;第二种自定义策略设置方法&#xff0c;使用PT交易信号设置持仓目标&#xff1a;第三…

【数组中重复的数据】leetcode,python

和上题一样&#xff0c;【找到所有数组中消失的数字】 换个判断条件就行 class Solution:def findDuplicates(self, nums: List[int]) -> List[int]:nlen(nums)for i in nums:x(i-1)%nnums[x]n#只需要替换条件即可return [i1 for i,num in enumerate(nums) if num>(2*n)…

第十四节 huggingface的trainner的_inner_training_loop函数源码解读

文章目录 前言一、self.get_train_dataloader()函数1、self.get_train_dataloader()函数完整源码2、dataset与dataloadera、dataset与dataloader来源b、dataset与dataloader处理c、self._get_collator_with_removed_columns()函数获得collate_fn3、self._get_train_sampler()采…

grep命令总结

grep命令可以是根据特定条件过滤文本内容。 查看含义指定字符的行 这里就是过滤含有root的行 [rootlu-k8s-master133 ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin查看开头含有指定字符的行 这里就是使用^r 代…

算法随想录第八天打卡|344.反转字符串,541. 反转字符串II, 卡码网:54.替换数字, 151.翻转字符串里的单词,卡码网:55.右旋转字符串

344.反转字符串 建议&#xff1a; 本题是字符串基础题目&#xff0c;就是考察 reverse 函数的实现&#xff0c;同时也明确一下 平时刷题什么时候用 库函数&#xff0c;什么时候 不用库函数 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 Python class Solution:def reve…

海外云手机的运作原理和适用场景

海外云手机是一种基于云计算技术的虚拟手机服务&#xff0c;通过将手机操作系统和应用程序托管在远程服务器上&#xff0c;实现用户可以通过互联网连接来使用和管理手机功能&#xff0c;而无需实际拥有物理手机。以下是有关海外云手机的相关信息&#xff1a; 海外云手机的运作原…

202212青少年软件编程(Python)等级考试试卷(二级)

第 1 题 【单选题】 运行下列程序&#xff0c; 最终输出的结果是&#xff1f; &#xff08; &#xff09; info {1:小明, 2:小黄,3:小兰}info[4] 小红info[2] 小白print(info)A :{1: ’ 小明’ , 2: ’ 小白’ , 3: ’ 小红’ , 4: ’ 小兰’ } B :{1: ’ 小明’ , 2: ’…

VRP系统详解

VRP系统详解 一、VRP简介 VRP&#xff08;Versatile Routing Platform&#xff09;&#xff0c;即通用路由平台&#xff0c;是华为公司在通信领域多年研究经验的结晶。作为华为公司数据通信产品的通用操作系统平台&#xff0c;VRP不仅支撑了华为从低端到核心的全系列路由器、以…

如何利用命令提示符列出文件?这里提供了几个实例供你参考

序言 什么命令可以用来列出目录中的文件&#xff1f;如何在命令提示符Windows 10/11中列出文件&#xff1f;很多人对这些问题感到困惑。在这篇文章中&#xff0c;我们详细解释了命令提示符列出文件的主题。 CMD&#xff08;命令提示符&#xff09;是一个功能强大的Windows内置…

Keil问题解决:结构体数组初始化,初始化后的值不是目标值

省流&#xff1a;使用的编译器为compiler version 6&#xff0c;切换为compiler version 5 如果缺少编译器&#xff0c;请参考&#xff1a;Keil手动安装编译器V5版本 结构体定义&#xff1a; typedef struct _TASK_COMPONENTS {uint8_t Run; // 程序运行标…

头歌python共享单车6.4

您提到的“头歌python共享单车6.4”似乎是一个特定上下文中的术语或者是某个项目、课程、教程的名称。然而&#xff0c;没有足够的信息来确切地解释它的含义。如果这是一个编程项目、课程或者与共享单车相关的数据分析任务&#xff0c;以下是一些可能相关的建议&#xff1a; 共…

雍禾植发张东宏:以诚相待毛发患者

医学道路上的奋斗往往需要坚定的信念和不懈的努力。对于张东宏医生来说&#xff0c;医学并非止步于书本知识&#xff0c;而是一次次与患者对话、一次次实操中的历练和积累。在他的成长历程中&#xff0c;医学之路如同一棵参天大树&#xff0c;每一步都是扎实的打磨&#xff0c;…