Qt扫盲-QScatterSeries理论总结

news2025/1/19 15:54:46

QScatterSeries理论总结

  • 一、概述
  • 二、使用
  • 三、扩展
  • 四、扩展使用
    • 1.创建描述散点图对象
    • 2. 对散点图像添加值
    • 3. 自定义散点
    • 4. 将绘图设备与散点图对象联系
    • 5. 设置坐标轴
    • 6. 将绘图设备与GUI控件绑定并显示

一、概述

QScatterSeries 类以散点图的形式呈现数据。散点数据在图表上显示为点的集合。对于每个点,都指定了两个值,用于确定它在水平轴和垂直轴上的位置。同时,这个这个类是继承至 QXYSeries 类,散点图的很多功能特性和 QLineSeries 和 QSplineSeries 基本一致的。都是横纵坐标代表一个数据。使用的一些概念的话 可以参考我的这边 Qt扫盲-QXYSeries理论总结。 这个 类其实也就是描述这个图含有的数据属性。至于绘图其实就是绘图控件的事情啦。

在这里插入图片描述

二、使用

最简单的一个流程用法就是:

  • 声明一个这个图数据的对象,
  • 对这个对象赋值和设置属性
  • 把这个图数据放到显示这个图的控件上就行。
  QScatterSeries* series = new QScatterSeries();
  series->append(0, 6);
  series->append(2, 4);
  ...
  chart->addSeries(series);

三、扩展

散点图提供了两种散点的形状

  • QScatterSeries::MarkerShapeCircle :圆形(默认的)

  • QScatterSeries::MarkerShapeRectangle :方形

但是我们可以可以自己绘制这个散点的形状,像上面的五角星即是自己绘制的形状

四、扩展使用

1.创建描述散点图对象

要创建散点图,需要一个QScatterSeries实例。这里我们创建了3个散点序列实例,并设置了散点形状和散点大小。

  QScatterSeries *series0 = new QScatterSeries();
  series0->setName("scatter1");
  series0->setMarkerShape(QScatterSeries::MarkerShapeCircle);
  series0->setMarkerSize(15.0);

  QScatterSeries *series1 = new QScatterSeries();
  series1->setName("scatter2");
  series1->setMarkerShape(QScatterSeries::MarkerShapeRectangle);
  series1->setMarkerSize(20.0);

  QScatterSeries *series2 = new QScatterSeries();
  series2->setName("scatter3");
  series2->setMarkerShape(QScatterSeries::MarkerShapeRectangle);
  series2->setMarkerSize(30.0);

2. 对散点图像添加值

我们添加要显示的数据。我们可以使用append()成员函数,也可以使用流操作符。

  series0->append(0, 6);
  series0->append(2, 4);
  series0->append(3, 8);
  series0->append(7, 4);
  series0->append(10, 5);

  *series1 << QPointF(1, 1) << QPointF(3, 3) << QPointF(7, 6) << QPointF(8, 3) << QPointF(10, 2);
  *series2 << QPointF(1, 5) << QPointF(4, 6) << QPointF(6, 3) << QPointF(9, 5);

3. 自定义散点

我们可以将散点形状的Brush定义为QPainter 。这里的QPainter 是使用QPainterPath创建的星形。

  QPainterPath starPath;
  starPath.moveTo(28, 15);
  for (int i = 1; i < 5; ++i) {
      starPath.lineTo(14 + 14 * qCos(0.8 * i * M_PI),
                      15 + 14 * qSin(0.8 * i * M_PI));
  }
  starPath.closeSubpath();

  QImage star(30, 30, QImage::Format_ARGB32);
  star.fill(Qt::transparent);

  QPainter painter(&star);
  painter.setRenderHint(QPainter::Antialiasing);
  painter.setPen(QRgb(0xf6a625));
  painter.setBrush(painter.pen().color());
  painter.drawPath(starPath);

  series2->setBrush(star);
  series2->setPen(QColor(Qt::transparent));

4. 将绘图设备与散点图对象联系

最后我们启用反锯齿,设置图表标题,并将散点序列添加到图表中。我们还禁用了投影,因为它在只显示图表视图的应用程序上看起来不太好。

  setRenderHint(QPainter::Antialiasing);
  chart()->addSeries(series0);
  chart()->addSeries(series1);
  chart()->addSeries(series2);

  chart()->setTitle("Simple scatterchart example");
  chart()->createDefaultAxes();
  chart()->setDropShadowEnabled(false);

5. 设置坐标轴

我们也可以使用散点作为图例标记。

 chart()->legend()->setMarkerShape(QLegend::MarkerShapeFromSeries);

6. 将绘图设备与GUI控件绑定并显示

图表已经准备好了。

ChartView *chartView = new ChartView();
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();

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

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

相关文章

基于jdk1.8的Java服务监控和性能调优

JVM的参数类型 X参数 非标准参数-Xint: 解释执行-Xcomp: 第一次使用就编译成本地代码-Xmixed: JVM自己来决定是否编译成本地代码 默认使用的是mixed mode 用的不多, 只需要做了解, 用的比较多的是XX参数 XX参数 非标准化参数相对不稳定主要用来JVM调优和Debug Boolean: …

Vivado综合属性系列之一 ASYNC_REG

目录 一、属性简介 二、示例 2.1 工程说明 ​ ​2.2 工程代码 ​ ​2.3 生效确认 一、属性简介 ASYNC_REG属性的作用对象为寄存器&#xff0c;寄存器添加该属性后&#xff0c;即表明寄存器的数据输入口D接收的是来自异步时钟触发器的数据或是该寄存器在一个同步链中属于…

【CSS系列】第九章 · CSS定位和布局

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

Uni-app 离线打包 apk

Uni-app 离线打包 apk 1. Android Studio 下载 Android Studio官网 2. HBuilderX下载 HBuilderX下载 3. App离线SDK下载 Android 离线SDK - 正式版 下载后解压文件&#xff0c;将 HBuilder-Integrate-AS 重命名 build-template 并拷贝到一个专门打包用的文件夹下作为打包…

一行代码绘制高分SCI限制立方图

一、概述 Restricted cubic splines (RCS)是一种基于样条函数的非参数化模型&#xff0c;它可以可靠地拟合非线性关系&#xff0c;可以自适应地调整分割结点。在统计学和机器学习领域&#xff0c;RCS通常用来对连续型自变量进行建模&#xff0c;并在解释自变量与响应变量的关系…

抑梯度异常初始化参数(防止梯度消失和梯度爆炸)

这里设置3种参数初始化的对比&#xff0c;分别是&#xff1a;全初始化为0、随机初始化、抑梯度异常初始化。 首先是正反向传播、画图、加载数据所需的函数init_utils.py&#xff1a; # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as plt import sklea…

双层优化入门(3)—基于智能优化算法的求解方法(附matlab代码)

前面两篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法&#xff0c;以及使用yalmip工具箱求解双层优化的方法&#xff1a; 双层优化入门(1)—基本原理与求解方法 双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码) 除了数学规划方法之外&#xff0c;…

springboot+vue大学生体质测试管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的大学生体质测试管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xf…

how2heap-fastbin_dup.c

不同libc版本的fastbin_dup.c源码有点小区别&#xff1a;主要是有tcache的&#xff0c;需要先填充 以下为有tcache的源码示例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <assert.h>int main() {setbuf(stdout, NULL);printf("This…

诗词·宇宙之梦

宇宙之梦 重力枷锁必将断&#xff0c;携君翱翔万里空。 迷途夜路寻踪迹&#xff0c;一声呼唤莫轻忽。 寻觅中&#xff0c;见红瞳&#xff0c;决不装假觉清白。 黑泽之中君沉沦&#xff0c;放之不下心怎静。 重力终将解开放&#xff0c;卫星翔空自由翱。 重量减半去忧愁&#xf…

RobotFramework+Eclispe环境安装篇

环境安装是学习任何一个新东西的第一步&#xff0c;这一步没走舒坦&#xff0c;那后面就没有心情走下去了。 引用名句&#xff1a;工欲善其事必先利其器&#xff01;&#xff01; Robotframework&#xff1a;一款 自动化测试框架。 Eclipse&#xff1a;一款编辑工具。可以编…

Android MVVN 使用入门

MVVM&#xff08;Model-View-ViewModel&#xff09;是一种基于数据绑定的设计模式&#xff0c;它与传统的 MVC 和 MVP 模式相比&#xff0c;更加适合处理复杂的 UI 逻辑和数据展示。在 Android 开发中&#xff0c;MVVM 通常使用 Data Binding 和 ViewModel 实现。 下面是一个简…

正则化解决过拟合

本片举三个例子进行对比&#xff0c;分别是&#xff1a;不使用正则化、使用L2正则化、使用dropout正则化。 首先是前后向传播、加载数据、画图所需要的相关函数的reg_utils.py&#xff1a; # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as plt impor…

双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码)

上一篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法&#xff1a; 双层优化入门(1)—基本原理与求解方法 这篇博客将介绍使用yalmip的双层优化问题的求解方法。 1.KKT函数 通过调用yalmip工具箱中的KKT函数&#xff0c;可以直接求出优化问题的KKT条件&#x…

算法(一)—— 回溯(2)

文章目录 1 131 分割回文串2 93 复原 IP 地址 s.substr(n, m) // 从字符串s的索引n开始&#xff0c;向后截取m个字符 例&#xff1a; string s "aaabbbcccddd"; string s1 s.substr(2,3); 此时s1为abb 1 131 分割回文串 切割问题&#xff0c;前文均为组合问题。组…

【Promptulate】一个强大的LLM Prompt Layer框架

本文节选自笔者博客&#xff1a; https://www.blog.zeeland.cn/archives/promptulate666 项目地址&#xff1a;https://github.com/Undertone0809/promptulate &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;全栈领域优质创作者。&#x1f4dd;…

pyinstaller打包为.exe过程中的问题与解决方法

目录 问题一&#xff1a;.exe文件过大问题二&#xff1a;pyinstaller与opencv-python版本不兼容问题三&#xff1a;打开文件时提示***.pyd文件已存在问题四&#xff1a;pyinstaller打包时提示UPX is not available.另&#xff1a;查看CUDA成功配置的方法 pyinsatller -F -w mai…

瑞吉外卖 - 开发环境搭建(2)

某马瑞吉外卖单体架构项目完整开发文档&#xff0c;基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成&#xff0c;有需要的胖友记得一键三连&#xff0c;关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料&#xff1a;https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

网络编程启蒙

文章目录 局域网、广域网WAN口LAN口那么什么是局域网和广域网呢&#xff1f; IP地址IPV4动态规划ipNAT IPV6IPV6的普及IPV6的应用 端口号协议协议分层协议分层的好处 OSI物理层数据链路层网络层&#xff08;全局&#xff09;传输层负责应用层网络设备所在分层网络分层中的一组重…

mybatis-plus实现乐观锁和悲观锁

目录 定义 场景 乐观锁与悲观锁 模拟修改冲突数据库中增加商品表 乐观锁实现 悲观锁 定义 1&#xff09;乐观锁 首先来看乐观锁&#xff0c;顾名思义&#xff0c;乐观锁就是持比较乐观态度的锁。就是在操作数据时非常乐观&#xff0c;认为别的线程不会同时修改数据&#x…