QCustomPlot的了解

news2025/1/24 5:44:26

(一)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---30
    21个刻度

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

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 inside
  the plot and \a outside is the length they will reach outside the plot. If \a outside is greater
  than 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.coloradmin.cn/o/1681287.html

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

相关文章

位图和布隆过滤器:位图

在《unordered_map 和 unordered_set》 中提到过&#xff1a; 哈希是一种思想&#xff0c;通过哈希函数将数据转化为一个或多个整型 —— 映射关系&#xff1b;通过这种映射关系&#xff0c;可以做到以 O(1) 的时间复杂度查找数据。 本文即将介绍的 位图 和 布隆过滤器 就是两个…

【漏洞复现】泛微OA E-Cology GetLabelByModule SQL注入漏洞

漏洞描述&#xff1a; 泛微OA E-Cology是一款面向中大型组织的数字化办公产品&#xff0c;它基于全新的设计理念和管理思想&#xff0c;旨在为中大型组织创建一个全新的高效协同办公环境。泛微OA E-Cology getLabelByModule存在SQL注入漏洞&#xff0c;允许攻击者非法访问和操…

ubuntu下安装pwndbg

安装pwndbg 如果可以科学上网 首先安装git apt install git 然后拉取git库 git clone GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy 进入到pwngdb的文件夹中 cd pwngdb 执行 ./setup.sh 而后输入gdb 出现红色pwndgb就是安装成功…

图形程序复用新纪元 探讨云库安全分享计划

在公司的开放式办公室中&#xff0c;卧龙与凤雏相邻而坐。周围的同事们都在忙碌地工作&#xff0c;键盘敲击声不绝于耳。卧龙眉头紧锁&#xff0c;全神贯注地调试着复杂的代码&#xff0c;仿佛在挑战编程世界的极限。而凤雏则在完成了一段代码编写后&#xff0c;轻松地伸展着身…

EtherCat:打通EtherCat奇经八脉(一)

一、EtherCat背景介绍 EtherCAT是一种用于实时以太网通信的现场总线协议。它由德国Beckhoff公司于2003年开发&#xff0c;并在2014年成为国际电机工程师协会&#xff08;IEC&#xff09;的国际标准&#xff08;IEC61158-12&#xff09;。 EtherCAT的设计目标是实现高性能的实时…

【独家发布】公司搭建绩效考核体系的方案(一)

某车辆公司成立于上世纪七十年代&#xff0c;其悠久历史可以追溯到洋务运动时期&#xff0c;曾开创了中国近代工业的先河。该公司拥有近五十年的车辆生产经验及积累&#xff0c;全球共有13个生产基地&#xff0c;22个整车发动机工厂和3个独立变速器工厂&#xff0c;1个技术中心…

JavaScript 进阶(二)

一、深入对象 1. 创建对象的三种方式 利用 new Object 创建对象 2. 构造函数 【注意事项】 【例】 这样子写好之后&#xff0c;想要添加一个新的结构类似的对象&#xff0c;直接照着红圈中写&#xff0c;最后改相应的数据就好了 注意&#xff1a;红色是第一步&#xff0c;黄…

大模型MoE技术深度解读,引领AI走向新高度

大模型系列之解读MoE Mixtral 8x7B的亮相&#xff0c;引领我们深入探索MoE大模型架构的奥秘。MoE究竟是什么&#xff1f;一起揭开它的神秘面纱。 1. MoE溯源 MoE&#xff0c;源自1991年的研究论文《Adaptive Mixture of Local Experts》&#xff0c;与集成学习方法相契合&…

水泡传感器内部结构

水泡传感器内部结构&#xff1a; 水泡传感器放大电路 电路是基于1.6V做的TIA I2V&#xff0c; 也就是输出部分基于1.6V做电压的增加或减少。

五分钟带大家理解什么是网络代理

网络代理是指一种特殊的网络服务&#xff0c;允许一个网络终端&#xff08;一般为客户端&#xff09;通过这个服务与另一个网络终端&#xff08;一般为服务器&#xff09;进行非直接的连接&#xff0c;一些网关、路由器等网络设备都具备网络代理功能。它的功能就是代理网络用户…

【prometheus】prometheus基于consul服务发现实现监控

目录 一、consul服务发现简介 1.1 consul简介 二、prometheus配置 2.1 node-exporter服务注册到consul 2.2 修改prometheus配置文件 【Prometheus】概念和工作原理介绍_prometheus工作原理-CSDN博客 【Prometheus】k8s集群部署node-exporter 【prometheus】k8s集群部署p…

什么是TCP的粘包、拆包问题?

一、问题解析 TCP粘包和拆包问题是指在进行TCP通信时&#xff0c;因为TCP是面向流的&#xff0c;所以发送方在传输数据时可能会将多个小的数据包粘合在一起发送&#xff0c;而接收方则可能将这些数据包拆分成多个小的数据包进行接收&#xff0c;从而导致数据接收出现错误或者数…

PHP开发中的不安全反序列化

序列化是开发语言中将某个对象转换为一串字节流的过程&#xff0c;转换后的字节流可以方便存储在数据库中&#xff0c;也可以方便在网络中进行传输。而反序列化则是将数据库取出的字节流或从网络上接收到的字节流反向转换为对象的过程。概念虽如此&#xff0c;但不同的开发语言…

SerDes系列之电路技术概述

现在的高速电路设计中&#xff0c;SerDes的应用几乎无处不在&#xff0c;如下图所示的一款SoC&#xff0c;其外设接口除了少量普通的IO&#xff0c;几乎都是SerDes专用接口&#xff0c;因此&#xff0c;电路设计中对于SerDes接口电路的熟知程度&#xff0c;几乎就决定了设计的成…

[数据集][目标检测]电力场景电力目标检测数据集VOC+YOLO格式476张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;476 标注数量(xml文件个数)&#xff1a;476 标注数量(txt文件个数)&#xff1a;476 标注类别…

在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; 在Linux系统上使用nmcli命令配置各种网络&#xff08;有线、无线、vlan、vxlan等&#xff09;https://myweb.myskillstree.cn/123.html 更新于2024/5/13&…

在Python中防止某些字段被Pickle序列化

在Python中&#xff0c;如果你想防止某些字段被pickle序列化&#xff0c;可以使用__reduce__()方法来自定义pickle行为。__reduce__()方法允许你返回一个元组&#xff0c;其中包含要在对象被pickle时调用的函数以及传递给该函数的参数。下面就是我遇到的问题以及最终解决方案。…

银行风险系统的全面解析:功能作用与系统间的互联互通

银行风险管理系统是银行为控制风险而建立的一套重要系统&#xff0c;主要用于评估、监测和控制银行面临的各种风险&#xff0c;包括信用风险、市场风险、操作风险等。 一、主要功能 风险识别&#xff1a;系统首先识别在业务开展中可能会面临的各种风险。这通常涉及对客户信息、…

JSP+SQL学生成绩管理系统

Java版本&#xff1a;1.8 数据库&#xff1a;MySQL 框架&#xff1a;Spring Spring MVC MyBatis 服务器&#xff1a;Tomcat 前端解析框架&#xff1a;Thymeleaf 开发工具&#xff1a;Idea 2017 版本管理工具&#xff1a;Maven 版本控制工具&#xff1a;GitHub 经过对系统的需…

STM32HAL库-中断篇

中断 中断简介 中断是一种事件处理机制&#xff0c;可以暂停主程序的运行&#xff0c;转而处理特定事件程序。 中断的作用和意义&#xff1a; 实时控制 在确定事件内对响应事件做出相应 故障处理 检测到故障需要第一时间处理 数据传输 如串口通信&#xff0c;不确定数…