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

news2024/9/20 7:08:50

硬件: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中之前已有的曲线和坐标轴,否则会出现多个坐标轴和曲线的情况,如下:

 

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

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

相关文章

Spring扩展点系列-SmartInstantiationAwareBeanPostProcessor

文章目录 简介源码分析示例 简介 spring容器中Bean的生命周期内所有可扩展的点的调用顺序 扩展接口 实现接口ApplicationContextlnitializer initialize AbstractApplicationContext refreshe BeanDefinitionRegistryPostProcessor postProcessBeanDefinitionRegistry B…

Python基础学习(1)

目录 一&#xff0c;表达式和变量 1&#xff0c;表达式 2&#xff0c;变量 二&#xff0c;类型 1&#xff0c;前言 2&#xff0c;动态性特征 一个技巧让python变量类型更加明确 3&#xff0c;变量的类型 1&#xff0c;整型 2&#xff0c;float 3&#xff0c;布尔型 4&…

border制作渐变色边框

border也可以做出渐变色效果 .themeConfig {width: 250px;height: 117px;border: 1.5px solid transparent !important;border-radius: 8px !important;background-clip: padding-box, border-box;background-origin: padding-box, border-box;background-image: linear-gradi…

linux第一课(操作系统核心)

一.关于linux (1)linux是一款开源的操作系统(是多用户&#xff0c;多任务&#xff0c;多线程)。 (2)一般所说的linux指的是linux核心&#xff0c;即对计算机硬件资源负责调度管理&#xff0c;主要职责是进程管理&#xff0c;内存管理文件系统&#xff0c;设备驱动&#xff0c…

轧钢测径仪对热轧产线实现温度系数自动修正!

钢材在轧制过程中&#xff0c;需要检测外径时&#xff0c;很多都处于高温状态&#xff0c;甚至是1000℃以上&#xff0c;这对轧钢测径仪是个巨大的考验&#xff0c;但测径仪在解决高温、水雾、氧化铁皮、震动等对测量影响的同时&#xff0c;还要考虑钢材热态下的膨胀造成的测量…

揭秘同态加密 (HE):你需要知道什么?

鉴于苹果公司发布了重要的 Swift 同态加密公告&#xff0c;Zama 高级软件工程师 Agns Leroy 详细解释了 HE 是什么、不同的方案及其功能&#xff0c;以及它在未来可能的用途。 7 月底&#xff0c;苹果隐私保护技术团队宣布了一项令人兴奋的新成果&#xff1a;‘swift-homomorp…

什么是WSL?

WSL&#xff08;Windows Subsystem for Linux&#xff09;是一个为在 Windows 10 和 Windows 11 上能够原生运行 Linux 二进制可执行文件的兼容层。 主要特点和功能包括&#xff1a; 一、运行 Linux 环境 允许用户在 Windows 系统上直接运行 Linux 命令行工具、脚本和应用程…

springboot系列--自动配置原理

一、容器功能 一、组件添加功能 一、Configuration Configuration有两种模式&#xff0c;Full模式与Lite模式。 1、配置 类组件之间无依赖关系用Lite模式加速容器启动过程&#xff0c;减少判断 2、配置类组件之间有依赖关系&#xff0c;方法会被调用得到之前单实例组件&#…

linux 操作系统下cupsdisable命令介绍和使用案例

linux 操作系统下cupsdisable命令介绍和使用案例 cupsdisable 命令是 Linux 操作系统中用于禁用 CUPS&#xff08;通用打印服务&#xff09;打印机的命令。它允许用户将指定的打印机设置为不可用状态&#xff0c;从而阻止任何新的打印作业被发送到该打印机 cupsdisable 命令概…

句子成分——每日一划(七)

目录 一、原句 二、第一部分 三、第二部分 一、原句 Such a state of affairs can only produce antagonism between the laboring class and the owning, i.e., do-nothing, class. The fight breaks out and hatred delivers its blows. 来源&#xff1a;Why I Was a Bur…

C++11第四弹:包装器

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

探索UWB技术的独特优势:实现高精度定位

UWB定位技术是一种利用无线信号进行精确位置定位的技术&#xff0c;它利用超宽带无线电信号通过测量信号的到达时间、相位差和信号能量等参数来确定物体的精确位置。 UWB定位技术具有多种优势&#xff0c;首先&#xff0c;它具有较高的定位精度&#xff0c;可实现毫米级的精确…

如何防止ZIP压缩文件被随意打开?

ZIP文件是常见的压缩文件格式&#xff0c;为了保护压缩包不被随意打开&#xff0c;很多人还会给ZIP压缩包设置密码&#xff0c;用于保护文件的数据安全&#xff0c;以下是一篇关于如何防止ZIP压缩文件被随意打开的详细探讨。 引言 ZIP文件因其高效的压缩率和广泛的兼容性&…

目标检测中的解耦和耦合、anchor-free和anchor-base

解耦和耦合 写在前面 在目标检测中&#xff0c;objectness&#xff08;或 objectness score&#xff09;指的是一个评分&#xff0c;用来表示某个预测框&#xff08;bounding box&#xff09;中是否包含一个目标物体。 具体来说&#xff0c;YOLO等目标检测算法需要在每个候选区…

基于OpenSSL的密码管理系统-应用密码学课程报告

第1章 概要设计 1.1 设计目的 本研究旨在设计并实现一个基于OpenSSL的密码管理系统&#xff0c;该系统具备密钥对的生成、密钥上传、密钥的核对、身份认证、文件与邮件的加密和解密、数字签名及数字证书管理等常用功能。研究的意义主要体现在以下几个方面&#xff1a; 提升网…

Ubuntu20-xrdp与Windows-mstsc远程桌面连接

ubuntu端 sudo adduser yu //输入密码和确认密码&#xff0c;后面一路回车&#xff0c;新建用户yu&#xff0c;确保用户没有被登录 sudo apt install xrdp //安装xrdp sudo systemctl status xrdp //查看xrdp服务状态 sudo adduser xrdp ssl-cert //将用户 xrdp 添加到 ss…

悟空crm客户管理系统二次开发 单独新增表格字段

1&#xff0c;仪表盘&#xff08;数据来源修改&#xff09; 注意点&#xff1a;有层级关系&#xff0c;管理员账号可以看到全部数据&#xff0c;主管只能看到下属数据。 2、在客户管理菜单里面 增加一个时间筛选、额度汇总 /*** 获取客户列表** param $type* param $content*…

在线API文档,技术文档工具源码ShowDoc

ShowDoc是一个非常适合IT团队的在线API文档、技术文档工具。通过showdoc&#xff0c;你可以方便地使用markdown语法来书写出美观的API文档、数据字典文档、技术文档、在线excel文档等等。 代码下载

单机docker-compose部署minio

单机多副本docker-compose部署minio 简单介绍 如果服务器有限可以单机挂载多硬盘实现多副本容错&#xff08;生产不推荐&#xff09; 部署好的文件状态 有两个重要文件 docker-compose.yaml和nginx.conf docker-compose.yaml是docker部署容器的配置信息包括4个minio和1个ng…

云微客全流程闭环,实现在短视频营销中快速拿结果

不知道大家有没有在抖音或者是其他短视频平台见过这样的视频&#xff0c;这一类的视频制作的非常简单&#xff0c;只有一个简单的文字搭配上背景素材&#xff0c;但是它的播放量和互动量却是惊人的好。在短视频领域的朋友想必有过这样心声&#xff0c;这么好的播放量&#xff0…