当前位置: 首页 > news >正文

qt使用对数坐标的例子,qchart用QLogValueAxis坐标不出图解决

硬件:ThinkPad T15

系统:win10 专业版

qt版本:Qt 5.14.1   , QtCreator 4.11.1

软件界面放了一个QPushButton,一个QVBoxLayout,如下:

主要代码如下,我添加了两条曲线,分别是series和series2,每条曲线1000个点,第一条曲线y值随x线性增加,第二条曲线y值获取的是0到1000以内的随机值,然后纵坐标用的对数坐标,范围是0.1到1000:

chart = new QChart();chart->setTitle("强度变化曲线");chart->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);chartView = new QChartView(this);chartView->setChart(chart);chartView->setRubberBand(QChartView::RectangleRubberBand);ui->verticalLayout->addWidget(chartView);
//使用对数坐标QLogValueAxis *logAxisY =new QLogValueAxis();logAxisY->setRange(0.1,1000);logAxisY->setLabelFormat("%.2f");// 设置纵坐标的标签格式logAxisY->setTitleText("y坐标");logAxisY->setMinorTickCount(5);//设置刻度间隔间的子间隔QValueAxis *axisX = new QValueAxis();axisX->setTitleText("x坐标");axisX->setRange(0, 100);chart->addAxis(logAxisY,Qt::AlignLeading);chart->addAxis(axisX,Qt::AlignBottom);QLineSeries *series = new QLineSeries(chart);//初始化一条折线QLineSeries *series2 = new QLineSeries(chart);//初始化一条折线for(int j = 1;j<=1000;j++){series->append(j*1.0f/10,j);//第一条曲线的y值线性增长double y = QRandomGenerator::global()->bounded(1000);if(y<=0)qDebug()<<y;y = y<=0?0.1:y;//因为对数曲线不能处理负数和0,所以要剔除异常值,否则曲线无法显示series2->append(j*1.0f/10,y);//第二条曲线的y值随机1000以内的值}chart->addSeries(series);//曲线添加到chart类中series->attachAxis(logAxisY);//曲线绑定y坐标(对数坐标)series->attachAxis(axisX);//曲线绑定x坐标(普通坐标)chart->addSeries(series2);//曲线添加到chart类中series2->attachAxis(logAxisY);//曲线绑定y坐标(对数坐标)series2->attachAxis(axisX);//曲线绑定x坐标(普通坐标)

运行效果如下,蓝色的是y随x线性增加的曲线,绿色的是y值取随机值的曲线:

正常的代码逻辑是:1.初始化QChart,2.初始化QChartView,并通过QChartView::setChart(QChart *chart)来设置QChart,3.初始化QLogValueAxis作为纵坐标并设置坐标轴范围,初始化QValueAxis作为横坐标并设置坐标轴范围,4.通过QChart::addAxis(QAbstractAxis *axis, Qt::Alignment alignment)将2个坐标轴添加到QChart中,5.初始化曲线QLineSeries,并将数据塞进曲线中,6.通过QChart::addSeries(QAbstractSeries *series)将曲线放进QChart中,7.通过QAbstractSeries::attachAxis(QAbstractAxis *axis)将曲线和坐标轴绑定。然后就能正常显示了。

有几个问题要注意:

问题一:如果没有将曲线绑定到对数坐标,那么显示出来的曲线是按照线性y坐标显示的,如下图:

问题二:曲线中的y值出现了<=0的值,则该条曲线就不能显示,如下图,第二条曲线中出现了0值,所以直接不显示了,只显示不含0值的第一条曲线:

问题三:每次重新显示曲线前,要清空QChart中之前已有的曲线和坐标轴,否则会出现多个坐标轴和曲线的情况,如下:

 

相关文章:

qt使用对数坐标的例子,qchart用QLogValueAxis坐标不出图解决

硬件&#xff1a;ThinkPad T15 系统&#xff1a;win10 专业版 qt版本&#xff1a;Qt 5.14.1 &#xff0c; QtCreator 4.11.1 软件界面放了一个QPushButton&#xff0c;一个QVBoxLayout&#xff0c;如下&#xff1a; 主要代码如下&#xff0c;我添加了两条曲线&#xff0c;…...

Python 爬虫入门 - 爬虫 requests 请求

在当今互联网时代,数据的获取变得尤为重要,而网络爬虫作为自动化获取数据的一种方式,受到了越来越多编程爱好者和数据分析人员的青睐。Python 语言以其简洁的语法和丰富的库,成为了实现网络爬虫的首选工具。其中,requests库是一个非常流行且强大的工具,用于发送 HTTP 请求…...

flink中startNewChain() 的详解

在 Apache Flink 中&#xff0c;startNewChain() 是一个与算子链&#xff08;operator chaining&#xff09;相关的方法。与 disableChaining() 类似&#xff0c;它允许开发者控制算子链的创建方式&#xff0c;但 startNewChain() 的作用是从当前算子开始创建一个新的算子链&am…...

uniapp 苹果安全域适配

一、使用原生占位&#xff08;仅App端支持&#xff09; //在manifest.json 文件中 app-plus 中配置 "safearea": { "background": "#FFFFFF", "bottom": { "offset": "auto" } } 二、不使用原生占位 //&…...

linux使用命令行编译qt.cpp

步骤&#xff1a; mkdir qttestcd qttestvim hello.cpp #include <QApplication> #include <QDialog> #include <QLabel> int main(int argc,char* argv[]) {QApplication a(argc,argv);QLabel label("aaa");label.resize(100,100);label.show()…...

Ubuntu 22.04 LTS 上安装 Docker

单台机器安装docker环境&#xff0c;是为了后面安装open-webui&#xff0c;环境安装比较简单&#xff0c;没有难点&#xff0c;但一定要按步骤走&#xff0c;否则还是会遇到一些问题的。 第 1 步&#xff1a;更新软件包并安装必要软件 运行以下命令&#xff0c;更新软件包索引…...

2024秋季云曦开学考

web ezezssrf 打开环境&#xff0c;代码审计 看起来有点多&#xff0c;要绕过五层 第一层&#xff1a;存在弱比较&#xff0c;使用数组或0e绕过 yunxi[]1&wlgf[]2 yunxis878926199a&wlgfs155964671a 第二层&#xff1a;存在强比较&#xff0c;此处使用string限制…...

基于STM32与Qt的自动平衡机器人:从控制到人机交互的的详细设计流程

一、项目概述 目标和用途 本项目旨在开发一款基于 STM32 控制的自动平衡机器人&#xff0c;结合步进电机和陀螺仪传感器&#xff0c;实现对平衡机器人的精确控制。该机器人可以用于教育、科研、娱乐等多个领域&#xff0c;帮助用户了解自动控制、机器人运动学等相关知识。 技…...

C#使用ZipFile的方法CreateFromDirectory

由于现在数据越来越大,虽然磁盘的大小也在增加,但是数据增加的速度是远超过磁盘的增加速度。 因为数据是一种思想的表现,特别是ChatGPT的AI出现,导致很多数据无限地使用机器化地产生,所以数据压缩还是很常有的事情,毕竟压缩之后可以减少磁盘空间的占用。 在C#里有一个专…...

Redis 哨兵模式的选举算法是什么?

Redis 哨兵模式中的选举算法主要用于在主节点出现故障时,从多个 Sentinel 节点中选出一个领导者(Leader)来执行故障转移操作。 Redis 哨兵的选举算法基于 Raft 算法的简化版本,但不完全等同于标准的 Raft 算法。以下是其主要过程: 一、发现主节点故障 当一个 Sentinel …...

Linux shell编程学习笔记80:gzip命令——让文件瘦身

0 引言 在 Linux shell编程学习笔记76&#xff1a;tar命令——快照 & 备份&#xff08;上&#xff09;-CSDN博客 Linux shell编程学习笔记77&#xff1a;tar命令——快照 & 备份&#xff08;下&#xff09;_linux 系统快照-CSDN博客 Linux shell编程学习笔记78&am…...

【字幕】恋上数据结构与算法之01为什么要学习数据结构与算法

视频地址&#xff1a;请查看01为什么要学习数据结构与算法_哔哩哔哩_bilibili 同志们好&#xff0c;我是小码哥的mj李明杰。非常欢迎大家来学习链上数据结构与算法&#xff0c;从今天开始呢就由我来带大家一起来学习和掌握这个数据结构与算法啊。在正式学习之前我们先来看一下…...

120页ppt丨集团公司战略规划内容、方法、步骤及战略规划案例研究

响应会员需求&#xff0c;晓零分享一份经典资料《120页ppt集团公司战略规划内容、方法、步骤及战略规划案例研究》&#xff0c;欢迎进入星球下载学习。 以下是对企业战略规划三个阶段八个步骤的详细解析&#xff1a; 一、阶段一&#xff1a;内外分析 项目启动和前期准备&…...

滚雪球学SpringCloud[2.3]:服务发现与负载均衡详解

全文目录&#xff1a; 前言1. Ribbon的使用与配置1.1 Ribbon 概述Ribbon 的核心功能&#xff1a; 1.2 Ribbon 的基本使用1.2.1 引入 Ribbon 依赖1.2.2 配置 RestTemplate 与 Ribbon1.2.3 示例&#xff1a;通过 Ribbon 调用服务 1.3 Ribbon 的配置选项 2. Ribbon的负载均衡策略2…...

商务英语口语之聚会宴饮常用口语柯桥培训到蓝天广场

吃饭一定要掌握的英语口语 邀请他人共进餐&#xff1a; Would you like to join me for dinner? 你愿意和我一起吃饭吗&#xff1f; Lets grab a bite to eat together. 我们一起去吃点东西吧。 How about having lunch with me? 和我一起吃午饭怎么样&#xff1f; 询问…...

【C#】VS插件

翻译 目前推荐较多的 可以单词发言&#xff0c;目前还在开发阶段 TranslateIntoChinese - Visual Studio Marketplace 下载量最高的(推荐) Visual-Studio-Translator - Visual Studio Marketplace 支持翻译的版本较多&#xff0c;在 Visual Studio 代码编辑器中通过 Googl…...

嵌入式C语言自我修养:C语言的面向对象编程思想

⭐关联知识点&#xff1a;C和C的区别 代码复用与分层思想 什么是代码复用呢&#xff1f; &#xff08;1&#xff09;函数级代码复用&#xff1a;定义一个函数实现某个功能&#xff0c;所有的程序都可以调用这个函数&#xff0c;不用自己再单独实现一遍&#xff0c;函数级的代…...

行车记录仪格式化了怎么恢复?专业恢复方法分享

行车记录仪作为现代驾驶的必备设备&#xff0c;它忠实记录着行车过程中的点点滴滴&#xff0c;是保障行车安全、处理交通事故的重要依据。然而&#xff0c;有时由于操作失误或其他原因&#xff0c;我们可能会不小心将行车记录仪进行格式化&#xff0c;导致宝贵的录像数据丢失。…...

C++中extern ”c“的理解

c中extern “C“的作用及理解_extern "c-CSDN博客...

红黑树的删除

文章目录 前言一.删除的节点左子树右子树都有二.删除的节点只有左/右子树删除调整操作 三.删除的节点没有孩子1.删除的节点为红色2.删除的节点为黑色1).兄弟节点为黑色(1).兄弟节点至少有一个红色的孩子节点LL型RR型RL型LR型 (2).兄弟节点没有孩子或所有孩子为黑色 2).兄弟节点…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...