QCustomPlot一、QCustomPlot基础及画图显示

1、QCustomPlot下载

QCustomPlot源码demo
根据需要选择需要的文件:
完整版。QCustomPlot.tar.gz 源代码+例子+帮助文档;
共享库。QCustomPlot-sharedlib.tar.gz 库编译和使用;
源代码。QCustomPlot-source.tar.gz 源代码
里面包含了很多QCustomplot的demo

2、创建项目并添加QCustomPlot相关文件

1、创建了一个空的工程
在这里插入图片描述
2、将cpp和h文件添加进工程
在这里插入图片描述在这里插入图片描述
3、编译报错解决
在这里插入图片描述
使用的是QT5,需要加上printsupport模块,方法是:QT +=printsupport
在这里插入图片描述
这样就编译完成了

4、ui文件增加QWidget并提升成QCustomPlot

添加QWidget
在这里插入图片描述
将QWideget提升为QCustomPlot
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
提升完成后,就可以进行画图了

3、QCustomPlot画图

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <cmath>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QVector<double> x,y;//创建QVector,保存x和y的值
    //设置x和y的值
    for(double xi=-2*M_PI;xi<2*M_PI;xi+=0.1)
    {
        x.push_back(xi);
        y.push_back(sin(xi));
    }

    this->ui->widget->addGraph(0);  //新建一条曲线
    this->ui->widget->graph(0)->setData(x,y);//绘制曲线
}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述
这样一个图就画出来了

4、QCustomPlot

1、QCPGraph曲线,上面的曲线就是QCPGraph
QCPGraph表示一个曲线,常见的方法有:

  • QCustomPlot::addGraph 增加一个曲线(一个曲线就需要手动addGraph);
  • QCustomPlot::graph 获得曲线实例;
  • setData/addData 设置/增加曲线数据;
  • setName 设置曲线名称,会在Legend显示的时候用到;
  • rescaleAxes 根据当前数据调整轴范围;
  • data 返回一个指向曲线数据的指针,可用于直接修改数据;

2、QCPAxisRect (矩形)轴
表示轴系统上的所有设置,如刻度,范围等。
QCustomPlot默认构造了四个轴,分别位于

  • 上(QCustomPlot::xAxis2)
  • 下(QCustomPlot::xAxis)
  • 左(QCustomPlot::yAxis)
  • 右(QCustomPlot::yAxis2)
    四个方位,默认显示左下两个轴,左(QCustomPlot::yAxis),下(QCustomPlot::xAxis)。
    设置轴上的表现:
    在这里插入图片描述在这里插入图片描述

3、QCPLegend 图线

QCustomPlot默认有成员QCustomPlot::legend实例(调用setVisible(true)显示),一般不需要自己构造QCPLengend,通过这个类你可以控制曲线说明的大小、颜色等属性

5、改进画图,显示坐标轴名称,设置轴的范围,显示曲线名称

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <cmath>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QVector<double> x,y;   //创建QVector,用来保存x轴和y轴的值
    //设置保存x轴和y轴的值
    for(double xi=-2*M_PI;xi<2*M_PI;xi+=0.1)
    {
        x.push_back(xi);
        y.push_back(sin(xi));
    }
    this->ui->widget->addGraph(0);  //新增一个曲线
    this->ui->widget->graph(0)->setData(x,y);//设置曲线的值,绘制曲线
    this->ui->widget->graph(0)->setName("y=sin(x)");//设置曲线名称
    this->ui->widget->rescaleAxes(true);  //根据当前数据自动设置轴的范围
    this->ui->widget->xAxis->setLabel("X下");  //设置轴的名称
    this->ui->widget->yAxis->setLabel("Y左");  //设置轴的名称
    this->ui->widget->xAxis2->setLabel("X上");  //设置轴的名称,默认不显示
    this->ui->widget->yAxis2->setLabel("Y右");  //设置轴的名称,默认不显示
    this->ui->widget->legend->setVisible(true);
}

MainWindow::~MainWindow()
{
    delete ui;
}


在这里插入图片描述
QCustomPlot本身可以设置交互行为,如放大,缩小移动,选择曲线交互,方法是:customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);

6、改变曲线的颜色、线宽和线型并在曲线与坐标轴之间增加填充颜色

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <cmath>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QVector<double> x,y;   //创建QVector,用来保存x轴和y轴的值
    //设置保存x轴和y轴的值
    for(double xi=-2*M_PI;xi<2*M_PI;xi+=0.1)
    {
        x.push_back(xi);
        y.push_back(sin(xi));
    }
    this->ui->widget->addGraph(0);  //新增一个曲线
    this->ui->widget->graph(0)->setData(x,y);//设置曲线的值,绘制曲线
    this->ui->widget->graph(0)->setName("y=sin(x)");//设置曲线名称
    this->ui->widget->rescaleAxes(true);  //根据当前数据自动设置轴的范围
    this->ui->widget->xAxis->setLabel("X下");  //设置轴的名称
    this->ui->widget->yAxis->setLabel("Y左");  //设置轴的名称
    this->ui->widget->xAxis2->setLabel("X上");  //设置轴的名称,默认不显示
    this->ui->widget->yAxis2->setLabel("Y右");  //设置轴的名称,默认不显示
    this->ui->widget->legend->setVisible(true);

    //增加部分
    QPen pen;
    pen.setColor(Qt::red);  //设置曲线颜色为红色
    pen.setStyle(Qt::DotLine);//设置曲线为虚线
    pen.setWidth(3);//设置线宽
    this->ui->widget->graph(0)->setPen(pen);  //设置曲线使用QPen绘制
    this->ui->widget->graph(0)->setBrush(QBrush(QColor(255,50,30,20)));//QBrush曲线之间填充颜色
}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

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

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

相关文章

JavaEE 初阶篇-深入了解单例模式(经典单例模式:饿汉模式、懒汉模式)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 单例模式的概述 2.0 单例模式 - 饿汉式单例 2.1 关于饿汉式单例的线程安全问题 3.0 单例模式 - 懒汉式单例 3.1 关于懒汉式单例的线程安全问题 3.1.1 加锁 synchr…

设计模式——行为型——责任链模式Chain Of Responsibility

请求类 public class ApproverRequest {private int type;//请求批准的类型private float price;//请求的金额private int id;//请求的编号 } 审批人抽象类 public abstract class ApproverPerson {protected ApproverPerson next;protected String name;//审批过程public a…

基于SSM+Jsp+Mysql的班级同学录网站

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

深入解析实时数仓Doris:Rollup上卷表与查询

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 一、基本概念二、Aggregate 和 Unique 模型中的 ROLLUP三、Duplicate 模型中的 ROLLUP四、ROLLUP 调整前缀索引五、ROLLUP使…

【Mars3d绘制完成后设置离地面的实体高度】graphicLayer.startDraw绘制带高度的实体

实现效果&#xff1a; 相关需求场景&#xff1a; 绘制之后可以在success中通过graphic可以拿到所点击的点的位置&#xff0c;然后重新生成一个graphic添加到地图上&#xff0c;重新生成的面在初始化的时候可以指定想要的高度 相关实现代码&#xff1a; // 开始绘制多边形 exp…

如何对抓取的文本进行分词、词频统计、词云可视化和情感分析

目录 一、引言 二、文本分词 三、词频统计 四、词云可视化 五、情感分析 六、总结 一、引言 在大数据时代&#xff0c;文本数据的处理和分析显得尤为重要。对于爬虫抓取的大量文本数据&#xff0c;如何进行高效、准确的处理和分析&#xff0c;是每一个数据分析师和开发…

QML 用文件的方式自定义组件

自定义组件 序言方法首先新建一个QML文件QML文件名称创建完后编写自己的组件 效果注意 序言 说到QML&#xff0c;就肯定离不了自定义一说&#xff0c;毕竟你总不至于用一个qml文件写完全部吧&#xff1f;我来写点基础的东西丰富下QML资料贫乏 方法 首先新建一个QML文件 QML文…

jupyter加目录contrib nbextension 使用

jupyter在工作中使用很方便&#xff0c;可是一旦单个文件的内容多了&#xff0c;即使有markdown文本提醒&#xff0c;上下翻找依旧很费精力。这时&#xff0c;有个目录就显得至关重要了。 1 安装模块 打开anaconda的PowerShell&#xff08;带有Prompt的&#xff09;&#xff0…

nut-ui中的menu 菜单组件的二次封装

这个菜单组件 一般可以直接用到项目里 如果复用性不强的话 直接使用 但是有一个问题 如果很多地方都需要用到这个组件 我们可以把这个组件二次封装一下 <template><div class"cinema-search-filter-component"><nut-menu><template #icon>&…

大学html作业-原神官网静态页面(免费)

大学html作业-原神官网静态页面&#xff08;免费&#xff09; 源码来自githab&#xff0c;有些简单的问题我都修复了。大家可以直接去找原作者的源码&#xff0c;如果githab打不开就从我下载的网盘里下载吧。 效果 在这里插入图片描述 源码

C++11模版元编程

1.概述 模版元编程&#xff08;template metaprogram&#xff09;是C中最复杂也是威力最强大的编程范式&#xff0c;它是一种可以创建和操纵程序的程序。模版元编程完全不同于普通的运行期程序&#xff0c;它很独特&#xff0c;因为模版元程序的执行完全是在编译期&#xff0c;…

找嵌入式软件工作,freertos要掌握到什么程度?

作为一个在嵌入式软件行业工作的6年的工程师告诉你&#xff0c;这根本不是重点&#xff0c;我没有实际学过RTOS&#xff0c;都是赶鸭子上架&#xff0c;只要你会单片机&#xff0c;这种东西太简单了。在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「fre…

Rust 机器学习图形库 petgraph

一、介绍 Petgraph 是一个开源的图数据结构库&#xff0c;提供了非常丰富的图形类型和算法&#xff0c;并且支持将图形以 Graphviz 格式输出&#xff0c;还允许你为图的节点和边赋予任意类型的数据&#xff0c;从而能够灵活地处理和表示复杂的数据关系。 Petgraph 支持边的方…

Day15_学点儿JavaScript_数据类型、关系运算符、String、Boolean、Array、Math、eval

1 JS简介 1.1 JS 1、直接嵌入HTML页面。 2、由浏览器解释执行代码&#xff0c;不进行预编译。 1.2 解释型语言和编译型语言 JS&#xff1a;解释型语言、弱类型语言 Java&#xff1a;编译型语言、强类型语言 变量: var num 100; variable 用var来定义一个变量。 int num …

某盾滑块拼图验证码增强版

介绍 提示&#xff1a;文章仅供交流学习&#xff0c;严禁用于非法用途&#xff0c;如有不当可联系本人删除 最近某盾新推出了&#xff0c;滑块拼图验证码&#xff0c;如下图所示&#xff0c;这篇文章介绍怎么识别滑块距离相关。 参数attrs 通过GET请求获取的参数attrs, 决…

虚拟机安装银河麒麟

背景 由于Centos将于2024-06-30结束维护【脱保】&#xff0c;届时会存在Bug无人修复及功能无人开发等问题&#xff0c;所以要赶在这个节点前完成操作系统升级。可选的就是RedHat、Ubuntu以及国产信创【中标麒麟、银河麒麟、统信等】&#xff0c;或者使用云上操作系统【例如租阿…

九泰智库 | 医械周刊- Vol.19

⚖️ 法规动态 国创中心联合中科院发布《高性能医疗器械2023年度发展报告》 近日&#xff0c;国家高性能医疗器械创新中心和中国科学院深圳先进技术研究院共同发布了《高性能医疗器械2023年度发展报告》。该报告指出&#xff0c;我国医疗器械领域已形成以粤港澳大湾区、长三角…

号称史上最全的PostgreSQL备份恢复,送给有缘人...

&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61c;&#x1f61c; 中国DBA联盟(ACD…

开抖店内行人都不说的秘密:这几个细节新手必犯!干货建议收藏!

哈喽~我是电商月月 开抖音小店必交的钱就是店铺的保证金 虽说店铺保证金最后店铺不开了&#xff0c;保证金还能退回 但只有开始运作时才知道&#xff0c;中间扣除你保证金的点有很多&#xff0c;要想继续开抖音小店&#xff0c;就得把扣的保证金补齐才能继续运行 但新手开店…