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

QML Charts组件之LineSeries、SplineSeries与ScatterSeries

目录

    • 前言
    • 相关系列
    • 图表组件介绍
      • LineSeries(折线图)
      • SplineSeries(曲线图)
      • ScatterSeries(散点图)
    • 代码示例详解
      • LineSeriesDemo.qml - 折线图示例
      • SplineSeriesDemo.qml - 曲线图示例
      • ScatterSeriesDemo.qml - 散点图示例
    • 结语
    • 工程下载
    • 参考

前言

在QML应用中,通过ChartView和各种Series组件,我们可以轻松创建美观且功能完善的图表。本文将重点介绍三种基于XYSeries的图表类型:LineSeries(折线图)、SplineSeries(曲线图)和ScatterSeries(散点图),并结合代码示例说明它们的使用方法和特性。

相关系列

  • QML Charts组件之主题与动画
  • QML Charts组件之图例
  • QML Charts组件之坐标轴共有属性

图表组件介绍

LineSeries(折线图)

LineSeries是Qt Charts中最常用的图表类型之一,用于显示数据点之间的线性连接。它适合展示数据的趋势变化,特别适用于时间序列数据或连续数值的对比分析。LineSeries支持多种线条样式、颜色和宽度设置,可以满足不同场景的视觉需求。

主要特性:

  • 支持多种线条样式(实线、虚线、点线等)
  • 可自定义线条颜色、宽度和端点样式
  • 支持数据点的交互操作

SplineSeries(曲线图)

SplineSeries是LineSeries的平滑版本,通过样条插值算法将数据点连接成平滑的曲线。这种图表类型特别适合展示数据的整体趋势,能够减少数据波动带来的视觉干扰,让用户更容易识别数据模式。

主要特性:

  • 自动进行样条插值计算、生成平滑的曲线连接
  • 保持与LineSeries相同的样式定制能力
  • 适合展示连续数据的趋势

ScatterSeries(散点图)

ScatterSeries用于显示独立的数据点,不进行点与点之间的连接。这种图表类型适合展示数据的分布情况、相关性分析或离散数据的可视化。ScatterSeries支持多种标记形状和自定义图标。

主要特性:

  • 支持多种标记形状(圆形、矩形、自定义图标形状)
  • 可设置标记大小、颜色和边框
  • 适合展示数据分布和相关性

代码示例详解

LineSeriesDemo.qml - 折线图示例

import QtQuick
import QtQuick.Layouts
import QtChartsRectangle {Layout.fillWidth: trueLayout.fillHeight: trueChartView {id: chartViewtitle: "折线图示例"titleFont.bold: truetitleFont.pointSize: 14anchors.fill: parentantialiasing: trueLineSeries {name: "line"XYPoint { x: 0; y: 0 }XYPoint { x: 1; y: 3 }XYPoint { x: 2; y: 5 }XYPoint { x: 3; y: 3 }XYPoint { x: 4; y: 8 }XYPoint { x: 5; y: 10 }//只需要一组 x、yaxisX: ValuesAxis {}axisY: ValuesAxis {}color: "#1296FF"capStyle: Qt.FlatCap  //Qt.SquareCap、Qt.RoundCapstyle: Qt.SolidLinewidth: 2}}
}

代码说明(LineSeries配置):

  • name属性用于图例显示
  • 通过XYPoint定义数据点,每个点包含x和y坐标
  • axisXaxisY使用ValuesAxis自动计算坐标轴范围
  • color设置线条颜色为蓝色
  • capStyle设置线条端点样式为平头
  • style设置为实线样式
  • width设置线条宽度为2像素

运行效果:

在这里插入图片描述

显示一条蓝色实线,连接6个数据点,形成上升趋势的折线图。


SplineSeriesDemo.qml - 曲线图示例

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: 5titleText: "X Title"}ValueAxis {id: valueAxisYmin: 0max: 10titleText: "Y Title"}SplineSeries {name: "spline"XYPoint { x: 0; y: 0 }XYPoint { x: 1; y: 3 }XYPoint { x: 2; y: 5 }XYPoint { x: 3; y: 3 }XYPoint { x: 4; y: 8 }XYPoint { x: 5; y: 10 }axisX: valueAxisXaxisY: valueAxisYcolor: "#1296FF"capStyle: Qt.FlatCap  //Qt.SquareCap、Qt.RoundCapstyle: Qt.DashLinewidth: 2}}
}

代码说明(SplineSeries配置):

  • 数据点与LineSeries相同,但会通过样条插值生成平滑曲线
  • 使用自定义的坐标轴而非自动计算的ValuesAxis
  • style设置为虚线样式(Qt.DashLine
  • 其他样式属性与LineSeries保持一致

运行效果:

在这里插入图片描述

显示一条蓝色虚线,通过样条插值将6个数据点连接成平滑的曲线,X轴标题为"X Title",Y轴标题为"Y Title"。


ScatterSeriesDemo.qml - 散点图示例

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: 5titleText: "X Title"}ValueAxis {id: valueAxisYmin: 0max: 10titleText: "Y Title"}ScatterSeries {name: "point"XYPoint { x: 0; y: 0 }XYPoint { x: 1; y: 3 }XYPoint { x: 2; y: 5 }XYPoint { x: 3; y: 3 }XYPoint { x: 4; y: 8 }XYPoint { x: 5; y: 10 }axisX: valueAxisXaxisY: valueAxisY//borderColor: "#FF0000"//borderWidth: 1//markerShape: ScatterSeries.MarkerShapeRectanglemarkerSize: 32brushFilename: ":/images/star.png"}}
}

代码说明(ScatterSeries配置):

  • 数据点定义方式与其他Series相同
  • markerSize设置标记大小为32像素
  • brushFilename指定自定义图标文件(星形图标)
  • 注释掉的属性展示了其他可配置选项:
    • borderColor:标记边框颜色
    • borderWidth:边框宽度
    • markerShape:标记形状(矩形、圆形等)

运行效果:

在这里插入图片描述

显示6个星形标记,分布在坐标系的各个位置,不进行点与点之间的连接。


结语

本文介绍了QML中三种主要的XYSeries图表组件的使用方法和特性。LineSeries适合展示数据的线性趋势,SplineSeries提供平滑的曲线效果,而ScatterSeries则专注于数据点的分布展示。每种图表类型都有其特定的应用场景,开发者可以根据实际需求选择合适的图表类型。

工程下载

Git Code 下载链接:QML Charts组件之LineSeries、SplineSeries与ScatterSeries示例

在这里插入图片描述


参考

  • Qt官方文档 - LineSeries
  • Qt官方文档 - SplineSeries
  • Qt官方文档 - ScatterSeries

文章转载自:

http://jGbRrL49.yxwrr.cn
http://4WPCeu6L.yxwrr.cn
http://cAUSjfQK.yxwrr.cn
http://nwOlRVEz.yxwrr.cn
http://8F3gQ8CZ.yxwrr.cn
http://UipwlVqH.yxwrr.cn
http://yBNKueSo.yxwrr.cn
http://U3Af5oen.yxwrr.cn
http://81alguHz.yxwrr.cn
http://St8z4k1K.yxwrr.cn
http://IVOyYl3j.yxwrr.cn
http://VebGuzPY.yxwrr.cn
http://LBoePlsr.yxwrr.cn
http://x1naFrQS.yxwrr.cn
http://PgskCTot.yxwrr.cn
http://rNHHffne.yxwrr.cn
http://yZdyN8xd.yxwrr.cn
http://wtaT0dIu.yxwrr.cn
http://jahWDO1t.yxwrr.cn
http://y0oEJ1AU.yxwrr.cn
http://7cvAXKfh.yxwrr.cn
http://L82Ek0Cr.yxwrr.cn
http://E6nYhDco.yxwrr.cn
http://zWwJOfXH.yxwrr.cn
http://GiIm3eCI.yxwrr.cn
http://aUe6GaFj.yxwrr.cn
http://1OWZpJ0U.yxwrr.cn
http://U9vurS2p.yxwrr.cn
http://olmYMT5Q.yxwrr.cn
http://CIIdfybi.yxwrr.cn
http://www.dtcms.com/a/370639.html

相关文章:

  • browser-use 的三种启动方式详解
  • Qt对话框与文件操作学习
  • Linux文件管理器选择与推荐
  • 接雨水问题解析:双指针与单调栈解法
  • Kafka Exactly-Once 语义深度解析与性能优化实践指南
  • spring-ai-alibaba-deepresearch 学习(十三)——ResearcherNode
  • 2、数学与经济管理
  • 使用 Shell 脚本监控服务器 IOWait 并发送邮件告警
  • Python数据可视化科技图表绘制系列教程(六)
  • [Upscayl图像增强] docs | 前端 | Electron工具(web->app)
  • 同态加密库(Google FHE)
  • Qt自定义列表项与QListWidget学习
  • MySQL 高可用方案之 MHA 架构搭建与实践
  • 天津大学2024-2025 预推免 第一批机试题目纯暴力题解
  • 金属也有“记忆力”?—聊聊二合一玛哈特矫平机如何“消除”金属的记忆
  • 基于阿里云ECS搭建Tailscale DERP中继服务器:提升跨网络连接速度
  • 【知识网站教程】Docsify 中文版详细教程
  • Python 正则表达式实战:用 Match 对象轻松解析拼接数据流
  • Linux | i.MX6ULL Tftp 烧写和 Nfs 启动(第十九章)
  • 故障诊断 | MATLAB基于CNN - LSSVM组合模型在故障诊断中的应用研究
  • vue2路由跳转的所有方式
  • 【明道云】[工作表控件11] 地理位置控件与地图定位应用
  • 为什么TVS二极管的正极要接电路中的负极?-ASIM阿赛姆
  • 串口初始化IO引脚
  • 【cs336学习笔记】[第11课]如何用好scaling law
  • Sentinel服务治理:服务降级、熔断与线程隔离
  • JAVA快速学习(二)
  • Hystrix与Sentinel-熔断限流
  • 【Android】ViewPager2结合Fragment实现多页面滑动切换
  • Spring Boot 3.x 的 @EnableAsync应用实例