Qt扫盲-Qt图表类综述

news2025/1/7 1:56:33

Qt支持图表类综述

  • 一、概述
  • 二、图表类型
    • 1. 折线图和柱状图
    • 2. 面积图和散点图
    • 3. 柱状图
    • 4. 饼图
    • 5. 盒须图
    • 6. 烛台图表
    • 7. 星座图图表
  • 三、坐标轴 Axes
  • 四、图例
  • 五、与图表交互
    • 1. 动态绘制数据
    • 2. 深入数据
    • 3. 缩放和滚动
    • 4. 鼠标悬停
  • 六、主题

一、概述

Qt Charts支持创建时尚的、交互式的、以数据为中心的用户界面。为了便于集成,Qt Charts使用图形视图框架。图表组件可以作为QWidget或 qgraphicwidget 对象或QML类型使用。

QChart 类管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示。QChart是一个qgraphicwidget,可以在QGraphicsScene中显示。一个更简单的解决方案是通过使用方便的类QChartView而不是QChart在布局中显示图表。在QML中,图表使用ChartView类型显示。
通过使用QChart类的专门化QPolarChart类或ChartView类型的专门化PolarChartView QML类型,一些图表组件也可以显示为极性图表。
可以通过使用主题、修改颜色和属性、隐藏图表组件或动画图表来定制图表的外观。
模型映射器允许使用从QAbstractItemModel类派生的数据模型作为图表的数据源。模型映射器可以是水平的,也可以是垂直的。

二、图表类型

Qt Charts模块提供了以下图表类型:

  • 折线图和圆滑线图
  • 面积图和散点图
  • 柱状图
  • 饼图
  • 盒须图
  • 烛台图(类似股票涨停的线)
  • 星座图

每种图表类型都由 QML 中的 QAbstractSeries 派生类或 AbstractSeries 派生类型表示。

图表是通过使用系列类的实例并将其添加到QChart或ChartView实例来创建的。

例如:

  QLineSeries* series = new QLineSeries();
  series->add(0, 6);
  series->add(2, 4);
  ...
  chartView->chart()->addSeries(series);
  chartView->chart()->createDefaultAxes();

或者在QML中:

  import QtQuick 2.0
  import QtCharts 2.0

  ChartView {
      width: 400
      height: 300
      theme: ChartView.ChartThemeBrownSand
      antialiasing: true

      PieSeries {
          id: pieSeries
          PieSlice { label: "eaten"; value: 94.9 }
          PieSlice { label: "not yet eaten"; value: 5.1 }
      }
  }

我们可以在一个图表中组合不同类型的系列。

1. 折线图和柱状图

折线图和圆滑线图将数据表示为由线连接的一系列数据点。在折线图中,数据点由直线连接,而在圆滑线图中,数据点由圆滑线连接。圆滑线是使用QPainterPath绘制的。

效果如下:
在这里插入图片描述

折线图是通过使用 QLineSeries 类或 LineSeries QML 类型实现的。

圆滑线图是通过使用继承QLineSeries的QSplineSeries类或继承LineSeries的SplineSeries类型实现的。

2. 面积图和散点图

面积图将数据表示为由两条线连接的区域,而散点图将数据表示为点的集合。
在这里插入图片描述

区域图是通过使用QAreaSeries类或AreaSeries QML类型实现的。默认情况下,x轴作为一个边界,QLineSeries或LineSeries作为另一个边界。但是,你可以同时使用QLineSeries或LineSeries作为边界。

散点图是通过使用QScatterSeries类或ScatterSeries QML类型实现的。

3. 柱状图

条形图以按类别分组的水平或垂直条形表示数据。QBarSet类和BarSet QML类型表示柱状图中的一组柱状。

QAbstractBarSeries类是所有栏系列类的抽象父类,AbstractBarSeries类型是栏系列类型的父类。序列类型决定了数据的呈现方式。

QBarSeries类和BarSeries QML类型将数据表示为按类别分组的竖条。类似地,QHorizontalBarSeries类和HorizontalBarSeries QML类型将数据表示为水平条。
在这里插入图片描述

QStackedBarSeries类和StackedBarSeries类型将一系列数据表示为垂直堆叠的条,每个类别一个条。相应的水平类和类型分别是QHorizontalStackedBarSeries和HorizontalStackedBarSeries。
在这里插入图片描述

QPercentBarSeries类和PercentBarSeries QML类型以每个类别的百分比表示一系列分类数据。相应的水平类和类型分别是QHorizontalPercentBarSeries和HorizontalPercentBarSeries。
在这里插入图片描述

4. 饼图

饼图将数据表示为由饼图切片组成的饼图。饼是使用QPieSeries类或PieSeries QML类型实现的,饼片是使用QPieSlice类或PieSlice QML类型添加的。
通过指定洞的大小在0.0到1.0之间,可以将饼变成甜甜圈。
.

5. 盒须图

盒须图将数据表示为四分位数,扩展了显示值可变性的须。箱形图系列中的项目按类别分组,类似于条形图系列中的条形集。对于每个盒须项,指定了下限、下限四分位数、中位数、上限四分位数和上限极值。
盒须图是通过使用QBoxPlotSeries和QBoxSet类或BoxPlotSeries和BoxSet QML类型实现的。

在这里插入图片描述

6. 烛台图表

烛台图以烛台的形式呈现一系列数据。
在这里插入图片描述

烛台图是通过使用QCandlestickSeries和QCandlestickSet类或CandlestickSeries和CandlestickSet QML类型实现的。

7. 星座图图表

极坐标图以圆形图形的形式显示数据,其中数据的位置基于图形中心(极点)的角度和距离。

QPolarChart类是QChart类的专门化。它支持直线、样条、区域和散点系列,以及它们支持的所有轴类型。轴既可以用作径向轴,也可以用作角轴。在QML中,对应的类型是PolarChartView。
有关更多信息,请参见极坐标图示例和Qml极坐标图。
#在这里插入图片描述

三、坐标轴 Axes

Qt Charts支持以下坐标轴类型:

  • 值轴
  • 类别轴
  • 条形类别轴
  • 日期-时间轴
  • 对数值轴

Qt Charts支持可以设置轴来显示带有标记、网格线和阴影的线。轴上的值画在标记的位置上。所有轴类型都是QAbstractAxis类或AbstractAxis QML类型的专门化。

坐标轴可以设置成刻度线、网格线和阴影线。坐标轴上的值绘制在刻度线的位置上。所有的轴类型都是QAbstractAxis类或AbstractAxis QML类型的特化。

值轴将实际值添加到图表的轴上。它是使用QValueAxis类或ValueAxis QML类型实现的。

使用QCategoryAxis类或CategoryAxis QML类型实现类别轴。它有命名范围和可调范围宽度。

条形类别轴类似于类别轴,但所有范围的范围宽度都相同。bar类别轴是使用QBarCategoryAxis类或BarCategoryAxis QML类型实现的。

日期-时间轴将日期和时间添加到图表轴上。它是使用QDateTimeAxis类或DateTimeAxis QML类型实现的。

对数轴向图表的轴添加对数刻度。对数标度是一种基于数量级的非线性标度,因此轴上的每个刻度都是前一个刻度乘以一个值。使用QLogValueAxis类或LogValueAxis QML类型实现对数轴。

可以为一个图表定义多个轴。坐标轴可以放在图表的上下左右。此外,轴可以是不同的类型。但是,不支持混合轴类型,这会导致不同的域,例如在同一方向上指定QValueAxis和QLogValueAxis。

四、图例

图例是一个显示图表图例的图形对象。图例对象不能被创建或删除,但是它们可以通过QChart类或ChartView QML类型被引用。当序列发生变化时,图例状态由QChart或ChartView更新。
图例可以位于图表的下方或上方,也可以位于图表的左侧或右侧。默认情况下,图例是附加到图表视图的,但它可以分离到一个可以自由移动的单独图形项。
可以隐藏图例中的单个标记,也可以隐藏整个图例。
图例标记可以通过使用QLegendMarker基类和每个序列类型的子类来修改:QAreaLegendMarker、QBarLegendMarker、QBoxPlotLegendMarker、QCandlestickLegendMarker和QXYLegendMarker。

五、与图表交互

用户可以通过以下方式与图表进行交互:动态地向图表添加值、深入聚焦数据、放大和缩小图表、滚动图表、单击图表中的项目或将鼠标悬停在图表上。

1. 动态绘制数据

可以动态地向图表添加数据,并使图表视图自动滚动以显示新数据

2. 深入数据

例如,可以将下钻效果实现为条形图或饼状图。当用户在图表中选择项目时,将显示该项的更详细视图
例如,可以对条形图或饼图实现下钻效果。当用户在图表中选择一个项目时,将显示该项目的更详细视图。这是通过删除第一个序列并添加另一个序列来实现的。

3. 缩放和滚动

用户可以使用键盘进行缩放和滚动。它们可以使用方向键滚动图表,也可以使用正负键放大或缩小图表。此外,QRubberBand可以用来选择要放大的区域。
在触控设备上,手势可以用来移动和缩放。

4. 鼠标悬停

可以将槽连接到终端用户单击图表中的项或将鼠标悬停在图表上时发出的信号。这使您能够向图表中添加元素,如标注。

六、主题

主题是应用于图表的所有视觉元素的UI样式相关设置的内置集合,例如颜色、钢笔、画笔和字体系列,以及轴、标题和图例。
在这里插入图片描述

Qt图表具有以下预定义的主题:

  • Light主题,这是默认主题
  • 天蓝色的主题
  • 黑暗的主题
  • 砂褐色主题
  • 自然颜色系统(NCS)蓝色主题
  • 高反差主题
  • 冰蓝色主题
  • Qt的主题

可以通过更改颜色、钢笔、画笔和字体来定制主题。可以通过修改Qt Charts的源代码来添加新的主题

就是对那个坐标线和保存图的线进行设置。

注意:更改主题将覆盖之前应用于该系列的所有自定义。

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

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

相关文章

Jetpack Compose之对话框和进度条

概述 对话框和进度条其实并无多大联系,放在一起写是因为两者的内容都不多,所以凑到一起,对话框是我们平时开发使用得比较多的组件,像隐私授权,用户点击删除时给用户提示这是一个危险操作等,进度条的使用频…

一文吃透Elasticsearch

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址 如果访问不了Github&#xff0c…

【自制】我造了一台 钢 铁 侠 的 机 械 臂 !【硬核】

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。

当我跑步时在想什么

最近好几个人对我说:你瘦了。这是非常激励人心的反馈,验证了跑步是有效的。只要今天开始锻炼,最胖的时候就算过去了,余生都会越来越美。前几天佛山50km徒步,带小朋友走了一半。下午有运动会,就没有走完了。…

提高职场效率,原来可以这么简单

身为职场人,你是否也有过类似的经历 看上去忙的很,手头东西又杂又多,但是一天过去了,到点下班发现啥都没做好当领导布置任务时,常常做了A后就忘记B,任务零碎不会安排做一件事情总是容易拖延,导致…

ROS开发之如何使用RPLidar A1二维激光雷达?

文章目录0.引言1.创建工作空间2.获取rplidar_ros包并编译3.检查雷达端口4.启动launch显示雷达扫描结果0.引言 笔者研究课题涉及多传感器融合,除了前期对ROS工具的学习,还需要用雷达获取数据,进行点云处理。虽然激光雷达已经应用很广泛&#x…

快速构建目标检测coco格式数据集

目标检测coco格式数据集coco数据集快速构建总结coco数据集 首先搞清楚coco格式数据集的组成。在data数据下、分为train、val以及annotations三个文件夹。(image是我未划分训练集和测试集的图像存储文件夹) 1.train文件夹:用来存放作为训练的图…

一个PostgreSql cli的工具

GitHub - xuejiazhi/pgii: pgii is a PostgreSql cli tool. PostgreSql is developed in CMD or Golang and can be compiled for multiple platforms pgii 是一个PostgreSql cli的工具,对PostgreSql 在CMD或者,采用Golang进行开发,可以多平台下面编译使用: 跨平台…

C/C++|物联网开发入门+项目实战|嵌入式C语言高级|C语言常用关键字及运算符操作-学习笔记(8)

文章目录2-2: C语言常用关键字及运算符操作关键字参考: 麦子学院-嵌入式C语言高级2-2: C语言常用关键字及运算符操作 [重点] 掌握C语言的常用关键宇及其应用场景,使用技巧 关键字 编译器:预先定义了一定意义的字符串,32个。 s…

RHCE3

综合练习:请给openlab搭建web网站 ​ 网站需求: ​ 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! ​ 2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于[www.…

对Spring循环依赖的一些理解

什么是循环依赖 类A有个字段需要注入类B,类B有个字段需要注入类C,类C有个字段需要注入类A,它们之间的依赖关系形成了一个循环。 Spring初始化完一个对象之后会把实例放入单例池(singletonObjects)中,也就是…

【FFT】快速傅里叶变换

开个新坑, 快速傅里叶变换在现在世界的各个领域都发挥重要作用。 包括音视频压缩、5G、WIFI、卷积、航空、雷达、核武等等 为什么使用快速傅里叶变换 快速傅里叶变换计算复杂度仅为O(nlogn) 而原傅里叶变换是O(n^2) 什么是快速傅里叶变换 是指对傅里叶变换中的重…

蓝桥杯嵌入式第十一届客观题解析

文章目录 前言一、题目1二、题目2三、题目3四、题目4五、题目5六、题目6七、题目7八、题目8九、题目9十、题目10总结前言 本篇文章将为大家带来蓝桥杯嵌入式省赛第11届客观题的解析。 一、题目1 积分电路的作用是对输入信号进行积分,因此在输入一个矩形波时,输出波形将是输…

租车管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87682508 更多系统资源库…

【MySQL】索引优化与查询优化(重点:索引失效的11种情况)

【大家好,我是爱干饭的猿,本文重点介绍MySQL的内连接、外连接、索引失效的11种情况、关联查询优化、子查询优化、排序优化、GROUP BY优化、优化分页查询、覆盖索引、索引条件下推和其它查询优化策略的一些问题。 后续会继续分享MySQL和其他重要知识点总…

Springboot基础学习之(二十一):Swagger基础学习(swagger信息介绍,配置扫描接口和开关,分组和接口注释)

什么是Swagger? Swagger2是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful 风格的Web 服务 使用Swagger你只需要按照它的规范去定义接口及接口相关的信息。再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口…

Flutter 滚动组件ListView,GridView,Sliver以及滚动监听

前言 身是菩提树 心是明镜台 时时勤拂拭 模式染尘埃 这玩意不难,就是东西多。。。 1 看一下继承关系 class GridView extends BoxScrollView abstract class BoxScrollView extends ScrollView abstract class ScrollView extends StatelessWidget 2 下面是scr…

set和map

set和map关联式容器键值对树状结构关联式容器set介绍使用multiset介绍使用map介绍使用multimap介绍使用底层容器AVL树概念操作节点定义插入旋转红黑树(RBTree)概念节点的设计迭代器的设计结构插入红黑树模拟实现set与map模拟实现map模拟实现set关联式容器…

【Java 数据结构】单向链表和双向链表的实现 (LinkedList)

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

android studio 页面布局(2)

<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/too…