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---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);
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java 项目通用数据权限设计

文章目录 前言一、常见的数据权限二、通用数据权限设计思路通用权限示例(灵活配置最简单方式)两个表业务理解最终拼接出来的sql 为: 总结 前言 权限一般分为操作权限和数据权限 操作权限: 菜单,页面,按钮 数据权限: 能看到的数据,包括各种页面的数据范围 一、常见的数据权限 …

kafka用java收发消息

用java客户端代码来对kafka收发消息 具体代码如下 package com.cool.interesting.kafka;import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; i…

MP3解码入门(基于libhelix)

主要参考资料: 【Arduino Linux】基于 Helix 解码库实现 MP3 音频播放: https://blog.csdn.net/weixin_42258222/article/details/122640413 libhelix-mp3: https://github.com/ultraembedded/libhelix-mp3/tree/master 目录 一、MP3文件二、MP3 解码库三、libhelix-mp3库3.1 …

Java 自然排序和比较器排序区别?Comparable接口和Comparator比较器区别?

注&#xff1a;如果你对排序不理解&#xff0c;请您耐心看完&#xff0c;你一定会明白的。文章通俗易懂。建议用idea运行一下案例。 1&#xff09;自然排序和比较器排序的区别&#xff1f; 自然排序是对象本身定义的排序规则&#xff0c;由对象实现 Comparable 接口&#xff…

思科模拟器--2.静态路由和默认路由配置24.5.15

首先&#xff0c;创建三个路由器和两个个人电脑。 接着&#xff0c;配置两台电脑的IP&#xff0c;子网掩码和默认网关 对Router 0&#xff0c;进行以下命令&#xff1a; 对Router进行以下命令&#xff1a; 对Router2进行以下命令&#xff1a; 本实验完成。 验证&#xff1a;PC…

Leetcode39.组合总和

文章目录 题目描述解题思路重复子集剪枝 代码 题目 参考题解 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返…

Android Studio kotlin 转 Java

一. 随笔记录 java代码可以转化成kotlin代码&#xff0c;当然 Kotlin 反过来也可以转java 在Android Studio中 可以很方便的操作 AS 环境&#xff1a;Android Studio Iguana | 2023.2.1 二. 操作步骤 1.步骤 顶部Tools ----->Kotlin ------>Show Kotlin Bytecode 步…

错误: 找不到或无法加载主类问题(已解决)

今天在虚拟机中安装了idea2023.2的版本&#xff0c;运行代码时发现错误找不到主类&#xff01; 直接说结论&#xff1a; 我先clean了一下target&#xff0c;然后重新build&#xff0c;发现maven报错了&#xff0c;idea2023.2默认使用了内置的maven&#xff0c;然后我切换了一下…

ThreadLocal,一次到位

一、定义 ThreadLocal是线程私有变量&#xff0c;用于保存每个线程的私有数据。 那么什么情况下需要进行线程隔离 二、源码分析 public class ThreadLocalTest01 {ThreadLocal<Integer> t new ThreadLocal<>();public void test() {t.set(1);Integer integer…

MT3036 第一节离数课后

思路&#xff1a; 这道题与之前的表达式求值题目不同的是&#xff0c;有not这个单目运算符。而且如果表达式错误&#xff0c;要输入error。 把true和false成为操作数&#xff0c;把and or not成为运算符。 考虑error的情况&#xff1a; 1.and 和 or是双目运算符&#xff0c…

文心一言指令多样化,你知道的有哪些?

文心一言的指令非常多样化&#xff0c;可以根据用户的需求和场景进行灵活调整。以下是一些常见的文心一言指令示例&#xff1a; 知识问答&#xff1a; 帮我解释一下什么是芯片&#xff1f;中国的历史上有哪些重要的朝代&#xff1f;人工智能在未来会有哪些发展趋势&#xff1f;…

表白成功率百分百的向女朋友表白网页源代码,向女友表白HTML源代码

表白成功率百分百的向女朋友表白网页源代码&#xff0c;向女友表白HTML源代码 效果&#xff1a; 完整代码下载地址&#xff1a;向女友表白HTML源代码 <!DOCTYPE html> <!--STATUS OK--> <html><head><meta http-equiv"Content-Type" c…

P8805 [蓝桥杯 2022 国 B] 机房

P8805 [蓝桥杯 2022 国 B] 机房 分析 是一道lca题目&#xff0c;可以直接套模板 前缀和处理点权 具体思路&#xff1a; 1.n台电脑用n-1条网线相连&#xff0c;任意两个节点之间有且仅有一条路径&#xff08;拆分成各自到公共祖先节点的路径——lca&#xff09;&#xff1b;…

CAD插入文字到另一图形样式变相同

CAD从一张图形复制到另外一张图形后&#xff0c;文字样式变成一样是因为两张图所用的文字样式名称一样&#xff0c;但是样式里面的使用字体样式不一样。如下图所示&#xff0c;找到工具栏中的注释 &#xff0c;点击文字样式。里面就会显示当前图形中使用的样式名称及其对应的字…

TINA 使用教程

常用功能 分析-电气规则检查&#xff1a;短路&#xff0c;断路等分析- 直流分析 交流分析 瞬态分析 视图-分离曲线 由于输出的容性负载导致的振荡 增加5欧电阻后OK 横扫参数 添加横扫曲线的电阻&#xff0c;选择R3&#xff1a;8K-20K PWL和WAV文件的支持 示例一&#xff1a;…

ubuntu在conda环境中使用 pip install -r requirements.txt但是没有安装在虚拟环境中

whereis pip pip listubuntu在conda环境中使用pip install lpips0.1.3 但是安装在了这里 Requirement already satisfied: lpips0.1.3 in /home/uriky/anaconda3/lib/python3.11/site-packages (0.1.3) 就会出现黄色波浪&#xff0c;未在虚拟环境中安装包 解决办法1&#xff1…

[NOIP2011 普及组] 瑞士轮

[NOIP2011 普及组] 瑞士轮 题目背景 在双人对决的竞技性比赛&#xff0c;如乒乓球、羽毛球、国际象棋中&#xff0c;最常见的赛制是淘汰赛和循环赛。前者的特点是比赛场数少&#xff0c;每场都紧张刺激&#xff0c;但偶然性较高。后者的特点是较为公平&#xff0c;偶然性较低…

如何使用JMeter测试导入接口/导出接口?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天上班&#xff0c;被开发问了一个问题&#xff1a;JM…

html基础(全)

html简介 目录 什么是网页 什么是 HTML 常用浏览器 WebE标准的构成 基本语法概述 第一个HTML页面 文档类型声明标签 lang 语言种类 字符集 标题标签 段落和换行标签 文本格式化标签 div和span标签 图像标签和路径 超链接标签 表格的主要作用 表头单元格标签 列…

[华为OD] C卷 dfs 特殊加密算法 100

题目&#xff1a; 有一种特殊的加密算法&#xff0c;明文为一段数字串&#xff0c;经过密码本查找转换&#xff0c;生成另一段密文数字串。 规则如下 1•明文为一段数字串由0-9组成 2.密码本为数字0-9组成的二维数组 3•需要按明文串的数字顺序在密码本里找到同样的数字串…