QCustomPlot 一个X轴多个Y轴

news2024/11/25 0:28:29

文章目录


大致效果如下:
在这里插入图片描述
相关代码如下:

    centerWidgetLayout->addLayout(hboxLayout,1);

    customplot = new QCustomPlot(centerWidget);
    centerWidgetLayout->addWidget(customplot,100);


    int  xPointNum = 1300 ;
    customplot->plotLayout()->clear(); //删除默认的

    //多个Y轴
    axisRect1 =  new QCPAxisRect(customplot);
    customplot->plotLayout()->addElement(0,0, axisRect1 );
    axisRect1->axis(QCPAxis::atLeft)->setLabel("s");
    axisRect1->axis(QCPAxis::atBottom)->setRange(0, xPointNum);
    axisRect1->axis(QCPAxis::atLeft)->setRange(0, 55);
    //axisRect1->axis(QCPAxis::atRight)->setVisible(true);

    //一个X 多个平行的Y轴
    axisRect1->addAxis(QCPAxis::atRight);
    axisRect1->axis(QCPAxis::atRight , 0)->setPadding(0);
    axisRect1->axis(QCPAxis::atRight , 1)->setPadding(10);
    axisRect1->axis(QCPAxis::atBottom, 0)->setPadding(20);

    axisRect1->axis(QCPAxis::atLeft)->setRange(0, 100);
    axisRect1->axis(QCPAxis::atRight, 0)->setRange(0, 50);
    axisRect1->axis(QCPAxis::atRight, 0)->setLabel("v");
    axisRect1->axis(QCPAxis::atRight, 1)->setRange(0, 200);
    axisRect1->axis(QCPAxis::atRight, 1)->setLabel("a");
    axisRect1->setupFullAxesBox(true);
    axisRect1->axis(QCPAxis::atRight, 0)->setTickLabels(true);


    //绘图
    graph1 = customplot->addGraph(axisRect1->axis(QCPAxis::atBottom), axisRect1->axis(QCPAxis::atLeft , 0));
    graph2 = customplot->addGraph(axisRect1->axis(QCPAxis::atBottom), axisRect1->axis(QCPAxis::atRight, 0));
    graph3 = customplot->addGraph(axisRect1->axis(QCPAxis::atBottom), axisRect1->axis(QCPAxis::atRight, 1));

    graph1->setPen(QPen(Qt::red));
    graph2->setPen(QPen(Qt::black));
    graph3->setPen(QPen(Qt::blue));


    m_pHorReffer = new QCPItemStraightLine(customplot);
    m_pHorReffer->setPen(QPen(Qt::red, 2, Qt::DotLine));
    //绑定坐标
    m_pHorReffer->setClipAxisRect(axisRect1);
    m_pHorReffer->point1->setCoords( 30,  750);//设置点1的坐标
    m_pHorReffer->point2->setCoords( 30,  0)  ;//设置点2的坐标
    connect(customplot, SIGNAL(mousePress(QMouseEvent*)),  this, SLOT(MymousePressEvent(QMouseEvent*)));

    //mTag1 = new AxisTag(graph1->valueAxis());
    mTag1 = new AxisTag(graph1->valueAxis());
    mTag1->setPen(graph1->pen());

    mTag1->updatePosition(0.0);
    mTag1->setText(QString::number(  0, 'f', 2));

    //customplot->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom| QCP::iSelectAxes |
    //               QCP::iSelectLegend | QCP::iSelectPlottables);

    //生成游标
    tracer = new QCPItemTracer(customplot); 
    tracer->setPen(QPen(Qt::red));
    tracer->setBrush(QBrush(Qt::red));
    tracer->setStyle(QCPItemTracer::tsCircle);
    tracer->position->setTypeX(QCPItemPosition::ptPlotCoords);
    tracer->position->setTypeY(QCPItemPosition::ptAxisRectRatio);
    tracer->position->setCoords(0.5, 0);
    tracer->setSize(4);//设置大小

    mArrow = new QCPItemLine(customplot);
    mArrow->setLayer("overlay");
    mArrow->setClipToAxisRect(false);
    mArrow->setHead(QCPLineEnding::esSpikeArrow);
    mArrow->end->setParentAnchor(tracer->position);
    mArrow->start->setParentAnchor(mArrow->end);
    mArrow->start->setCoords(0, 10);

    tracerLabel = new QCPItemText(customplot); 
    tracerLabel->setLayer("overlay");  
    tracerLabel->setClipToAxisRect(false); 
    tracerLabel->setPadding(QMargins(3, 0, 3, 0)); 
    tracerLabel->setPen(QPen(Qt::black));
    tracerLabel->setBrush(QBrush(Qt::green));
    tracerLabel->setPositionAlignment(Qt::AlignTop | Qt::AlignHCenter);//上中间
    tracerLabel->position->setParentAnchor(mArrow->start); //将游标说明锚固在tracer位置处,实现自动跟随

    tracer->position->setCoords(4, 1);
	//tracerLabel->position->setCoords(0, 15);
	mArrow->start->setCoords(0, 15);
	mArrow->end->setCoords(0, 0);
	tracerLabel->setText("###");

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

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

相关文章

鸿蒙Harmony应用开发—ArkTS声明式开发(手势处理:绑定手势方法)

为组件绑定不同类型的手势事件,并设置事件的响应方法。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 绑定手势识别 通过如下属性给组件绑定手势识别,手势识别成功后可以通过事…

Docker容器数据卷使用

创建容器 将本地的/home/ceshi和容器的/home目录进行一个挂载,文件内容会进行同步 -v参数就是进行一个卷的挂载 主机路径:容器内的路径 [rootwq ~]# cd /home/ [rootwq home]# ll total 8 drwx------ 3 admin admin 4096 Dec 29 10:16 admin drwx------ 2 www www 4096…

如何使用DS file+cpolar内网穿透实现远程访问本地群晖NAS传输文件

文章目录 1. 群晖安装Cpolar2. 创建TCP公网地址3. 远程访问群晖文件4. 固定TCP公网地址5. 固定TCP地址连接 DS file 是一个由群晖公司开发的文件管理应用程序,主要用于浏览、访问和管理存储在群晖NAS(网络附加存储)中的文件。这个应用程序具有…

【C++】类和对象(中)一篇文章带你学会六大默认成员函数

目录 一、类的6个默认成员函数二、 构造函数2.1 概念2.2 特征 三、析构函数3.1 概念3.2 特性 四、拷贝构造函数4.1 概念4.2 特征 五、赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 前置和后置重载 六、日期类的实现七、const成员八、取地址及const取地址操作符重载结尾 …

新品发布会媒体邀请,邀约记者现场报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 新品发布会媒体邀请及记者现场报道邀约流程: 一、策划准备 明确新品发布会时间、地点和主题。 制定媒体邀请计划,确定目标媒体。 二、邀请媒体 向目标媒体发送…

关于制作Python游戏全过程(汇总1)

目录 前言: 1.plane_sprites模块: 1.1导入模块: 1.1.1pygame:一个用于创建游戏的Python库。 1.1.2random:Python标准库中的一个模块,用于生成随机数。 1.2定义事件代号: 1.2.1ENEMY_EVENT:自定义的敌机出场事件代号&#xf…

TypeScript 哈希表

文章目录 概念哈希化冲突链地址法开放地址法 装填因子(loadFactor)效率对比哈希函数字符串转数字算法 —— 幂的连乘压缩数字范围 —— 取余优秀哈希算法的优点快速计算:霍纳法则均匀分布 —— 质数Java 中的 HashMapN次幂的底数 实现哈希函数…

基于QGIS的研究区域遥感影像裁切下载方法-以岳麓区为例

目录 前言 一、数据说明 1、遥感影像 2、矢量范围 二、按矢量范围导出 1、第一步、导出影像 2、第二步、设置输出格式 3、设置裁切范围 4、设置分辨率 三、按矢量范围掩膜 1、第一步、打开裁剪工具 2、第二步、参数设置 ​编辑 3、执行掩膜 四、webgis支持 1、生成运行…

NineData云原生智能数据管理平台新功能发布|2024年2月版

SQL开发:全功能支持百度云 GaiaDB 介绍:支持通过 SQL 开发所有能力管理 GaiaDB 实例。更多信息,请参见:真香!NineData SQL 开发全面适配 GaiaDB 场景:企业使用 GaiaDB 管理企业数据,需要一个一…

【EI会议征稿通知】第三届信息经济、数据建模与云计算国际学术会议 (ICIDC 2024)

第三届信息经济、数据建模与云计算国际学术会议 2024 3rd International Conference on Information Economy, Data Modeling and Cloud Computing(ICIDC 2024) 第三届信息经济、数据建模与云计算国际学术会议(ICIDC 2024)定于2024年6月21-23日在中国…

javaWebssh药品进销存信息管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh药品进销存信息管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOM…

YOLOv8-Openvino-ByteTrack【CPU】

纯检测如下: YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 注:YOLOv8和YOLOv9代码内容基本一致! 全部代码Github&…

[数据集][图像分类]芒果叶病害分类数据集4000张5类别

数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):4000 分类类别数:8 类别名称:["anthracnose","bacterial_canker","cutting_weevil","die_back",&…

EasyRecovery易恢复14最新版Win电脑安装包下载

EasyRecovery易恢复是一款数据恢复软件。它专门用于恢复因各种情况(如误删除、格式化、病毒攻击、分区丢失等)而丢失的数据。这款软件支持恢复多种类型的文件,包括文档、图片、视频、音频等,并且可以从各种存储设备(如…

【YOLO v5 v7 v8 v9小目标改进】HTA:自注意力 + 通道注意力 + 重叠交叉注意力,提高细节识别、颜色表达、边缘清晰度

HTA:自注意力 通道注意力 重叠交叉注意力,提高细节识别、颜色表达、边缘清晰度 提出背景框架浅层特征提取深层特征提取图像重建混合注意力块(HAB)重叠交叉注意力块(OCAB)同任务预训练效果 小目标涨点YOLO…

06 - 镜像管理

1 了解镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 但注意, 镜像不包含任何动态数据&#…

sql多表运用 12.3

肖SIR__数据库之多表运用__12.3 数据库之多表运用 CREATE table dept(dept1 VARCHAR(6),dept_name VARCHAR(20)) default charsetutf8; INSERT into dept VALUES (101,财务); INSERT into dept VALUES (102,销售); INSERT into dept VALUES (103,IT技术); INSERT into dep…

【已解决】conda环境下ROS2 colcon build编译选择特定python解释器

目录 1 问题背景2 问题探索3 问题解决4 告别Bug 1 问题背景 环境: ROS2 HumbleUbuntu22.04 现象:运行colcon build后由cpp编译生成的python导出库(如自定义消息、服务等),其版本与由python setup.py安装的python库版本不一致,导致…

App自动化测试笔记(四):UIAutomatorViewer与元素定位API

UIAutomatorViewer 1、应用场景 定位元素的时候必须根据元素的相关特征来进行定位,而 UIAutomatorViewer 就是用来获取元素特征的。 如何使用UIAutomatorViewer 1、保证想要查看的元素在当前的频幕上 2、打开UIAutomatorViewer工具 3、点击左上角左数第二个按钮…

IDEA切换JDK版本超详细步骤

😀 IDEA切换JDK版本详细教程,全网步骤最详细,实测可用。 文章目录 第一步、选择SDKs切换SDK版本:第二步、选择Modules切换Sources和Dependencies版本:第三步、选择Project切换SDK和Language Level版本:第四…