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

QML Charts组件之坐标轴示例

目录

    • 引言
    • 🎯 运行效果预览
    • 📚 相关系列文章
    • 四种坐标轴详解与代码实践
      • 1. 数值坐标轴(ValueAxis)
        • 示例代码
        • 说明
      • 2. 对数坐标轴(LogValueAxis)
        • 示例代码
        • 说明
      • 3. 日期坐标轴(DateTimeAxis)
        • 示例代码
        • 说明
      • 4. 分类坐标轴(BarCategoryAxis)
        • 示例代码
        • 说明
    • 总结
    • 源码下载
    • 参考

引言

在使用QML进行数据可视化开发时,QtCharts模块提供了强大而灵活的图表功能。其中坐标轴是图表的核心组成部分之一,它决定了数据如何在图表中被展示和解读。合理选择和配置坐标轴类型,不仅能提升图表的可读性,还能更准确地反映数据特征。

本文将详细介绍 QtCharts 中的四种常用坐标轴类型:

  • ValueAxis:数值坐标轴
  • LogValueAxis:对数坐标轴
  • DateTimeAxis:日期时间坐标轴
  • BarCategoryAxis:分类坐标轴

🎯 运行效果预览

坐标轴效果预览


📚 相关系列文章

在QML中使用Chart组件


四种坐标轴详解与代码实践

1. 数值坐标轴(ValueAxis)

✅ 适用场景 用于表示连续的数值数据,如温度、速度、价格等线性变化的数据。

📊 效果图 :

数值坐标轴示例

示例代码
import QtQuick
import QtQuick.Layouts
import QtChartsRectangle {Layout.fillWidth: trueLayout.fillHeight: trueChartView {id: chartViewtitle: "数值坐标轴示例"titleFont.bold: truetitleFont.pointSize: 14anchors.fill: parentantialiasing: trueValueAxis {id: valueAxisXmin: 0max: 4titleText: "X Title"}ValueAxis {id: valueAxisYmin: 0max: 16titleText: "Y Title"}LineSeries {name: "line"XYPoint { x: 0; y: 0 }XYPoint { x: 1; y: 1 }XYPoint { x: 2; y: 4 }XYPoint { x: 3; y: 9 }XYPoint { x: 4; y: 16 }axisX: valueAxisXaxisY: valueAxisY}}
}
说明
  • ValueAxis 支持设置最小值 min 和最大值 max。 - 可通过 titleText 设置坐标轴标题。
  • LineSeries 使用 axisXaxisY 绑定到对应轴。

2. 对数坐标轴(LogValueAxis)

✅ 适用场景 当数据跨度极大(如从1到10000),使用对数坐标可以更好地展示变化趋势,常用于科学计算、信号处理等领域。

📊 效果图:

对数坐标轴示例

示例代码
import QtQuick
import QtQuick.Layouts
import QtChartsRectangle {Layout.fillWidth: trueLayout.fillHeight: trueChartView {id: chartViewtitle: "对数坐标轴示例"titleFont.bold: truetitleFont.pointSize: 14anchors.fill: parentantialiasing: trueLogValueAxis {id: valueAxisXmin: 1max: 100base: 10labelFormat: "%.0f"titleText: "X Title"}LogValueAxis {id: valueAxisYmin: 1max: 10000base: 10labelFormat: "%.0f"titleText: "Y Title"}LineSeries {name: "line"XYPoint { x: 1; y: 1 }XYPoint { x: 10; y: 100 }XYPoint { x: 100; y: 10000 }axisX: valueAxisXaxisY: valueAxisY}}
说明
  • LogValueAxisbase 属性设置对数的底数(常用为10)。
  • labelFormat 控制刻度标签的显示格式。
  • 注意:对数坐标轴的最小值不能为0或负数。

3. 日期坐标轴(DateTimeAxis)

✅ 适用场景 适用于时间序列数据,如股票走势、日志记录、传感器采样等。

📊 效果图:

日期坐标轴示例

示例代码
import QtQuick
import QtQuick.Layouts
import QtChartsRectangle {Layout.fillWidth: trueLayout.fillHeight: trueChartView {id: chartViewtitle: "日期坐标轴示例"titleFont.bold: truetitleFont.pointSize: 14anchors.fill: parentantialiasing: trueDateTimeAxis {id: valueAxisXmin: new Date(2023, 0, 1)max: new Date(2023, 3, 1)format: "MMM yyyy"tickCount: 4titleText: "X Title"}ValueAxis {id: valueAxisYmin: 0max: 16titleText: "Y Title"}LineSeries {name: "line"// 注意:JavaScript 的 Date 对象月份是从 0 开始的XYPoint { x: new Date(2023, 0, 1).getTime(); y: 10 }XYPoint { x: new Date(2023, 1, 1).getTime(); y: 15 }XYPoint { x: new Date(2023, 2, 1).getTime(); y: 12 }XYPoint { x: new Date(2023, 3, 1).getTime(); y: 18 }axisX: valueAxisXaxisY: valueAxisY}}
}
说明
  • DateTimeAxis 使用 JavaScript 的 Date 对象。
  • getTime() 返回时间戳(毫秒),用于 XYPointx 值。
  • format 控制时间显示格式,tickCount 设置刻度数量。

4. 分类坐标轴(BarCategoryAxis)

✅ 适用场景 用于非数值类的离散数据,如月份、地区、产品类别等,常见于柱状图、条形图。

📊 效果图:

分类坐标轴示例

示例代码
import QtQuick
import QtQuick.Layouts
import QtChartsRectangle {Layout.fillWidth: trueLayout.fillHeight: trueChartView {id: chartViewtitle: "分类坐标轴示例"titleFont.bold: truetitleFont.pointSize: 14anchors.fill: parentantialiasing: trueBarCategoryAxis {id: valueAxisXcategories: ["一月", "二月", "三月", "四月"]titleText: "X Title"}ValueAxis {id: valueAxisYmin: 0max: 20titleText: "Y Title"}BarSeries {name: "分类坐标轴示例"axisX: valueAxisXaxisY: valueAxisYBarSet {label: "bar"values: [10, 15, 12, 18]}}}
}
说明
  • BarCategoryAxis 使用字符串数组作为分类标签。
  • BarSeriesBarSet 配合使用,适合柱状图。
  • 每个 BarSetvalues 顺序必须与 categories 一一对应。

总结

坐标轴类型适用场景典型图表
ValueAxis线性数值数据折线图、散点图
LogValueAxis跨数量级的数据(如指数增长)科学图表、信号图
DateTimeAxis时间序列数据股价图、日志图
BarCategoryAxis离散分类数据柱状图、条形图

源码下载

Git Code 下载链接:Charts 坐标轴示例

在这里插入图片描述


参考

  • ValueAxis 文档
  • LogValueAxis 文档
  • DateTimeAxis 文档
  • BarCategoryAxis 文档
http://www.dtcms.com/a/348719.html

相关文章:

  • LangGraph 与 MCP 模型上下文协议简介与演示
  • 教育系统搭建攻略:线上知识付费与线下消课排课全解析
  • 【Java开发日记】我们来讲一讲 Channel 和 FileChannel
  • Polkadot - JAM
  • 美股期权历史市场数据波动特性分析
  • 【中文教材】14. 汇率计算
  • 人工智能-python-深度学习-tensor基操
  • 数学建模(摸索中……)
  • CUDA安装,pytorch库安装
  • 如何实现模版引擎
  • Shell 学习笔记 - Shell 三剑客篇
  • unity热更新总结
  • 【如何使用Redis实现分布式锁详解讲解】
  • [快乐数](哈希表)
  • 解决编译osgEarth中winsocket2.h找不到头文件问题
  • 基于Spark的热门旅游景点数据分析系统的设计-django+spider
  • Spring Boot测试陷阱:失败测试为何“传染”其他用例?
  • 【追涨抄底关注】副图指标 紫色主力线上行表明资金介入明显 配合价格突破时可靠性更高
  • deepseek连接solidworks设计一台非标设备 (part1)
  • 阿里云ECS服务器搭建ThinkPHP环境
  • 互联网大厂AI/大模型应用开发工程师面试剧本与解析
  • 阿里云云数据库RDS PostgreSQL管控功能使用
  • 基于SpringBoot的婚纱影楼服务预约平台【2026最新】
  • Spring AI 学习笔记(2)
  • GitHub 热榜项目 - 日榜(2025-08-24)
  • Wireshark USRP联合波形捕获(下)
  • windows上如何实现把指定网段的流量转发到指定的端口,有哪些界面化的软件用来配置完成,类似于 Linux中的iptables规则实现
  • 6.1Element UI布局容器
  • 【Luogu】P2602 [ZJOI2010] 数字计数 (数位DP)
  • 基于大模型的对话式推荐系统技术架构设计-- 大数据平台层