首页 > 其他分享 >QCustomPlot基础教程(九)——QCustomPlot中轴的相关属性和方法

QCustomPlot基础教程(九)——QCustomPlot中轴的相关属性和方法

时间:2022-12-23 11:37:03浏览次数:70  
标签:基础教程 customPlot 缩放 标签 QCustomPlot 中轴 设置 graph

https://blog.csdn.net/didi_ya/article/details/121128836

目录

本文将对QCustomPlot中最重要的一部分——轴进行详细介绍。

1、前言

基础部分就不过多介绍了,不懂得可以直接参考:QCustomPlot基础教程(一)——QCustomPlot的安装及基础实例,代码部分也不做过多介绍,代码使用的是QCustomPlot基础教程(二)——在Qt中绘制多个曲线的相关代码。

2、QCustomPlot中的轴介绍

QCustomPlot中由QCPAxis类管理QCustomPlot内的单个轴。
通常不需要外部实例化。通过QCustomPlot::xAxis(底部)、QCustomPlot::yAxis(左侧)、QCustomPlot::xAxis2(顶部)和QCustomPlot::yAxis2(右侧)访问QCustomPlot的默认四个轴。其位置如下图所示:
在这里插入图片描述
QCustomPlot有四个QCPAxis成员变量,分别代表四个坐标轴:xAxis(下)yAxis(左)xAxis2(上)yAxis2(右)。

3、设置轴标签与清空轴标签

设置轴标签利用setLabel函数:
void QCPAxis::setLabel const QString &str)

代码示例:

customPlot->xAxis->setLabel("x");
customPlot->yAxis->setLabel("y");
  • 1
  • 2

这段代码的意思是将下坐标轴标签设置为x,将右坐标轴标签设置为y。

清空轴标签同样利用setLabel()函数,代码如下:

customPlot->xAxis->setLabel("");
customPlot->yAxis->setLabel("");
  • 1
  • 2

4、设置轴范围

设置轴的范围利用setRange函数:
void QCPAxis::setRange (double lower, double upper)
lower表示最小值,upper表示最大值

代码示例:

customPlot->xAxis->setRange(-1, 1);
customPlot->yAxis->setRange(0, 1);
  • 1
  • 2

这段代码的意思是将x轴范围设置为[-1,1],将y轴范围设置为[0,1]。

大多数情况下,需要将设置使坐标轴自行缩放能够完全显示,代码如下:

    customPlot->graph(0)->rescaleAxes();
    customPlot->graph(1)->rescaleAxes(true);
  • 1
  • 2

【注意】:
调用 customPlot->graph(0)->rescaleAxes();后范围被缩小了,曲线正好占满整个区域,但是调用customPlot->graph(0)->rescaleAxes(true)就不会有变化,因为区域不会缩小。

利用这点可以通过多次调用rescaleaxis来完整地显示多个graph的数据。让graph(0)自动缩放rescaleAxes(),在graph(0)范围的基础上rescaleAxes(true)只会扩大范围或不变而不缩小,这样最终能够显示graph(n)所有的数据。
n条曲线自行缩放能够完全显示代码示例如下:

    customPlot->graph(0)->rescaleAxes();
    customPlot->graph(1)->rescaleAxes(true);
    customPlot->graph(2)->rescaleAxes(true);
    ...
    customPlot->graph(n)->rescaleAxes(true);
  • 1
  • 2
  • 3
  • 4
  • 5

5、设置轴与记号标签的显示与隐藏

设置是否显示轴利用setVisible()函数:
void QCPLayer::setVisible(bool visible)
轴默认显示,如果不显示可以将bool设置为false,如下:

customPlot->xAxis->setVisible(false);
  • 1

在这里插入图片描述

设置是否显示记号标签利用setTickLabels()函数:
void QCPAxis::setTickLabels(bool show)
记号标签是在记号旁边绘制的数字。
记号标签默认显示,如果不显示可以将bool设置为false,如下:

customPlot->xAxis->setTickLabels(false);
  • 1

在这里插入图片描述

【注:左轴和下轴默认显示轴和记号标签,右轴和上轴默认不显示轴和记号标签,如果想为右轴和上轴显示刻度但不显示标签,可以进行如下设置:】

    customPlot->xAxis2->setVisible(true);
    customPlot->xAxis2->setTickLabels(false);
    customPlot->yAxis2->setVisible(true);
    customPlot->yAxis2->setTickLabels(false);
  • 1
  • 2
  • 3
  • 4

设置后的图像分别如下图所示:
在这里插入图片描述
设置后,还需要设置使左轴和下轴始终将其范围转移到上轴和右轴上,代码如下:

    connect(customPlot->xAxis, SIGNAL(rangeChanged(QCPRange)), customPlot->xAxis2, SLOT(setRange(QCPRange)));
    connect(customPlot->yAxis, SIGNAL(rangeChanged(QCPRange)), customPlot->yAxis2, SLOT(setRange(QCPRange)));
  • 1
  • 2

设置后效果如图:
在这里插入图片描述

6、设置轴的颜色

设置轴的颜色利用setBasePen函数:
void QCPAxis::setBasePen(const QPen & pen)

代码示例:

    customPlot->xAxis->setBasePen(QPen(Qt::red,4));//设置下轴为红色
    customPlot->yAxis->setBasePen(QPen(Qt::blue,4));//设置左轴为蓝色
    customPlot->xAxis2->setBasePen(QPen(Qt::yellow,4));//设置上轴为黄色
    customPlot->yAxis2->setBasePen(QPen(Qt::green,4));//设置右轴为绿色
  • 1
  • 2
  • 3
  • 4

运行结果:
在这里插入图片描述

7、设置背景颜色

设置背景颜色利用setBackground函数:
void QPainter::setBackground(const QBrush &brush)
设置背景为黑色代码如下:

customPlot->axisRect()->setBackground(QBrush(Qt::black));//背景黑色
  • 1

运行结果:
在这里插入图片描述

8、设置背景图片

设置背景图片同样利用setBackground()函数:
void QCPAxisRect::setBackground (const QPixmap & pm)
设置背景缩放使用setBackgroundScaled()函数:
void QCPAxisRect::setBackgroundScaled (bool scaled)
设置缩放图形的横纵比利用setBackgroundScaledMode函数:
void QCPAxisRect::setBackgroundScaledMode(Qt::AspectRatioMode mode)
该函数常与setBackgroundScaled函数集合使用,代表缩放图形时的横纵比。常用参数如下:
在这里插入图片描述

参数描述
Qt::IgnoreAspectRatio大小可自由缩放。不保留纵横比
Qt::KeepAspectRatio在给定的矩形内,大小被缩放为一个尽可能大的矩形,保留纵横比
Qt::KeepAspectRatioByExpanding将大小缩放为给定矩形外尽可能小的矩形,保留纵横比

设置背景图片代码如下:

    customplot->axisRect()->setBackgroundScaled(true);//启用背景缩放 
    customplot->axisRect()->setBackgroundScaledMode(Qt::AspectRatioMode::IgnoreAspectRatio);//自由缩放
    customplot->axisRect()->setBackground(QPixmap(":/image/background.jpg"));//背景图片
  • 1
  • 2
  • 3

运行结果:
在这里插入图片描述


以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~

参考:
【1】https://blog.csdn.net/yxy244/article/details/100311112

标签:基础教程,customPlot,缩放,标签,QCustomPlot,中轴,设置,graph
From: https://www.cnblogs.com/mkmkbj/p/17000292.html

相关文章

  • QT QCustomPlot 中用参考线标示曲线的值
    https://blog.csdn.net/qq_37006532/article/details/127537965一、前言嵌入式触摸系统主要介绍qt用QCustomPlot实现曲线绘制后,点击屏幕,在曲线上显示点击位置的曲线值......
  • 基础教程-try.except-命令行输入-字符串格式化
    tryexpecttry块允许您测试代码块以查找错误。except块允许您处理错误。finally块允许您执行代码,无论try和except块的结果如何。多个异常elsefinally定义多......
  • 基础教程-json-正则表达式-pip
    jsonJSON是用于存储和交换数据的语法。py中的json导入json模块importjsonjson->pyjson.loads()py->jsonjson.dumps()可以把以下类型的Python对象转换为......
  • 基础教程-迭代器
    迭代器是一种对象迭代器vs可迭代对象列表、元组、字典和集合都是可迭代的对象。所有这些对象都有用于获取迭代器的iter()方法mylist=[1,2,3,4,5,6,7,8]myit=ite......
  • 基础教程-类和对象-继承
    创建类和对象class关键字classA:a=4#实例化对象myA=A()print(myA.a)init()函数所有类都有一个_init_()函数,在启动类的时候执行,使用init()函数将值......
  • 基础教程-函数-lambda-数组
    函数创建,调用函数deffun():print("6")fun()参数根据需要添加任意数量的参数,只需用逗号分隔即可默认值:defmy_function(country="China"):print("Iamfro......
  • 基础教程-布尔-列表-元组-集合-字典
    布尔评估结果大部分都为true除空值(例如()、[]、{}、""、数字0和值None)外,没有多少值会被评估为False。当然,值False的计算结果为False。运算符类型作用......
  • 基础教程-if-while-for
    if简写if只有一条语句ifa>b:print("aisgreaterthanb")passif语句不能为空,但是如果您处于某种原因写了无内容的if语句,请使用pass语句来避免错误whilef......
  • QCustomPlot基础教程(十三)——Qt中QCustomPlot清除已绘制的曲线方法总结(全面汇总)
    https://blog.csdn.net/didi_ya/article/details/121237553目录1、前言2、方法一——clearGraphs()3、方法二——clearPlottables()4、方法三——clear()5、方法四......
  • 名师课堂|Python基础教程 2 变量与数据类型
    学习目标注释的分类及语法变量的作用定义变量认识数据类型一、注释的分类注释最大的作用,是能够增强程序的可读性在Python中,注释分为两类:单选注释和多行注释1.单行注释只能......