当前位置: 首页 > 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).兄弟节点…...

我给了智能体$100去赚钱,结果...

你看过那些演示。一个自主智能体启动&#xff0c;获得一个目标&#xff0c;然后——跳到两周后的 Twitter 帖子——它不知怎么地就在运营一个 Shopify 店铺、写通讯和炒币了。未来已来。AGI 即将降临。买课吧。 我想找出实际发生了什么。 所以我给了一个智能体 100 美元和一个…...

Godot游戏引擎与强化学习结合:从零构建AI智能体的实战指南

1. 项目概述&#xff1a;当游戏开发遇上强化学习如果你是一名游戏开发者&#xff0c;或者对游戏AI的实现抱有浓厚兴趣&#xff0c;那么“edbeeching/godot_rl_agents”这个项目绝对值得你花时间深入研究。简单来说&#xff0c;这是一个将当下最热门的强化学习技术与免费、开源的…...

AI科技热点日报 | 2026年5月16日

文章目录AI科技热点日报 | 2026年5月16日一、大模型与基础技术《人工智能终端智能化分级》系列国家标准发布"九章四号"量子计算原型机刷新世界纪录二、AI政策与监管人工智能科技伦理审查与服务先导计划启动工信部部署高质量行业数据集建设三、Agent与应用"AI教育…...

基于Blazor与LLamaSharp构建本地大模型ChatGPT式Web应用

1. 项目概述与核心价值最近在折腾一个内部工具&#xff0c;想把本地大模型的能力和类似ChatGPT的对话体验结合起来&#xff0c;部署成一个Web应用。找了一圈&#xff0c;发现一个挺有意思的项目叫“BLlamaSharp.ChatGpt.Blazor”。光看这个名字&#xff0c;信息量就很大了&…...

AI智能体文件管理:从零构建统一资产仓库与版本控制系统

1. 项目概述与核心价值最近在折腾AI智能体开发的朋友&#xff0c;估计没少为文件管理这事儿头疼。你辛辛苦苦训练好的模型、精心设计的提示词模板、还有那些五花八门的配置文件&#xff0c;是不是散落在各个角落&#xff0c;每次想复现或者分享都得一通乱找&#xff1f;更别提团…...

RK3288嵌入式开发实战:硬件架构、软件定制与典型应用场景解析

1. 项目概述&#xff1a;为什么RK3288至今仍是嵌入式开发的“硬通货”&#xff1f; 在嵌入式开发这个行当里&#xff0c;选型是个技术活&#xff0c;更是个经验活。你既要考虑当下的性能需求&#xff0c;又要掂量未来的扩展可能&#xff0c;还得平衡成本、功耗和开发周期。从业…...

Linux驱动开发:原子操作实现LED设备互斥访问

1. 项目概述&#xff1a;用原子操作给LED驱动加把“锁”在嵌入式Linux开发里&#xff0c;驱动开发是绕不开的一环。很多时候&#xff0c;一个硬件设备&#xff0c;比如一个简单的LED灯&#xff0c;可能会被多个用户空间的应用程序同时访问。想象一下&#xff0c;一个APP想开灯&…...

用STM32F103C8T6和HC-05蓝牙模块,从零DIY一辆蓝牙遥控小车(附完整代码与MIT App Inventor教程)

从零打造STM32蓝牙遥控小车&#xff1a;硬件配置到APP开发全指南 项目背景与核心价值 对于嵌入式开发初学者来说&#xff0c;理论知识和实际项目之间往往存在一道难以跨越的鸿沟。而一个完整的硬件项目实践&#xff0c;恰恰是填补这一空白的最佳方式。基于STM32F103C8T6和HC-05…...

如何用Photoshop图层批量导出工具提升3倍工作效率 [特殊字符]

如何用Photoshop图层批量导出工具提升3倍工作效率 &#x1f680; 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script from Adobe. 项目地址: http…...

Claude Code用户如何迁移至Taotoken解决账号与Token限制问题

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Claude Code用户如何迁移至Taotoken解决账号与Token限制问题 对于依赖Claude Code进行编程辅助的开发者而言&#xff0c;直接使用官…...