散点图(scatter chart)将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。在QChart中,使用类QScatterSeries创建散点图。

QScatterSeries

QScatterSeries类在散点图中显示数据。散点数据在图表上显示为点的集合。对于每个点,指定两个值来确定其在水平轴和垂直轴上的位置。下面的代码演示如何创建一个基本的散点图:

series = QScatterSeries()
series.append(0, 6)
series.append(2, 4)
...
chart.addSeries(series)

QScatterSeries常用函数:

  • setBorderColor(self, color):设置用于绘制标记边框的颜色。
  • setMarkerShape(self, shape):设置用于渲染系列中的点的标记的形状。
  • setMarkerSize(self, size):设置用于渲染系列中的点的标记的尺寸。
  • borderColor(self):获得用于绘制标记边框的颜色。
  • brush(self):获得用于绘制散布系列标记的笔刷。
  • markerShape(self):获得用于渲染系列中的点的标记的形状。
  • markerSize(self):获得用于渲染系列中的点的标记的尺寸。

QScatterSeries提供两种散点图轮廓样式,由枚举量QScatterSeries.MakerShape确定:

  • QScatterSeries.MarkerShapeCircle (0): 标记是一个圆圈。这是默认值。
  • QScatterSeries.MarkerShapeRectangle (1): 标记是一个矩形。

QScatterSeries常用信号:

  • borderColorChanged(self, color):当线条(笔)颜色变为color时,发出此信号。
  • colorChanged(self,color):当填充(画刷)颜色变为color时,发出此信号。
  • markerShapeChanged(self, shape):当标记形状更改为shape时,将发出此信号。
  • markerSizeChanged(self, size):当标记尺寸更改为size时,将发出此信号。

创建散点图

使用QScatterSeries创建一个散点序列,并为散点设置轮廓的类型和宽度。然后使用append()函数或者流的方式添加要显示的数据,并为散点3创建了一个星星样式的标记轮廓,然后将散点图添加到图表上,为图表设置标题,最后在图表视图上显示出来。完整代码如下:

import sys,math
from PyQt5.QtCore import Qt, QPointF
from PyQt5.QtGui import QPainter, QImage, QPainterPath, QColor, QBrush
from PyQt5.QtWidgets import QApplication, QMainWindow
from  PyQt5.QtChart import (QChartView, QChart, QScatterSeries, QLegendMarker, QLegend)class DemoChartScatter(QMainWindow):def __init__(self, parent=None):super(DemoChartScatter, self).__init__(parent)   # 设置窗口标题self.setWindowTitle('实战 Qt for Python: QChart散点图演示')      # 设置窗口大小self.resize(480, 360)self.createChart()def createChart(self):#散点图scatterSeries0 = QScatterSeries()scatterSeries0.setName('散点1')scatterSeries0.setMarkerShape(QScatterSeries.MarkerShapeCircle)scatterSeries0.setMarkerSize(15.0)scatterSeries1 = QScatterSeries()scatterSeries1.setName('散点2')scatterSeries1.setMarkerShape(QScatterSeries.MarkerShapeRectangle)scatterSeries1.setMarkerSize(20.0)scatterSeries2 = QScatterSeries()scatterSeries2.setName('散点3')scatterSeries2.setMarkerShape(QScatterSeries.MarkerShapeRectangle)scatterSeries2.setMarkerSize(30.0)scatterSeries0.append(0, 6)scatterSeries0.append(2, 4)scatterSeries0.append(3, 8)scatterSeries0.append(7, 4)scatterSeries0.append(10, 5)scatterSeries1 << QPointF(1, 1) << QPointF(3, 3) << QPointF(7, 6) << QPointF(8, 3) << QPointF(10, 2)#scatterSeries1.append([QPointF(1,1),  QPointF(3, 3), QPointF(7, 6), QPointF(8, 3), QPointF(10, 2)])scatterSeries2 << QPointF(1, 5) << QPointF(4, 6) << QPointF(6, 3) << QPointF(9, 5)#为散点2定制一个星星形状的标记形状starPath = QPainterPath()starPath.moveTo(28, 15)for i in range(1,5):starPath.lineTo(14 + 14 * math.cos(0.8 * i * math.pi),15 + 14 * math.sin(0.8 * i * math.pi))starPath.closeSubpath()star = QImage(30, 30, QImage.Format_ARGB32)star.fill(Qt.transparent)painter = QPainter(star)painter.setRenderHint(QPainter.Antialiasing)painter.setPen(QColor(0xf6a625))painter.setBrush(painter.pen().color())painter.drawPath(starPath) del painter  #必须这样强制释放painterscatterSeries2.setBrush(QBrush(star))scatterSeries2.setPen(QColor(Qt.transparent))#创建图表chart = QChart()chart.addSeries(scatterSeries0)chart.addSeries(scatterSeries1)chart.addSeries(scatterSeries2)chart.setTitle('简单散点图示例')chart.createDefaultAxes()chart.setDropShadowEnabled(False)#设置图例上标记形状chart.legend().setMarkerShape(QLegend.MarkerShapeFromSeries)#图表视图chartView = QChartView(chart)chartView.setRenderHint(QPainter.Antialiasing)self.setCentralWidget(chartView)if __name__ == '__main__':app = QApplication(sys.argv)window = DemoChartScatter()window.show()sys.exit(app.exec())

运行结果如下图:

QChart散点图

本文知识点

  • 什么是散点图。
  • 使用QScatterSeries序列绘制散点图。
  • 为散点图定制标记样式。

前一篇:实战PyQt5: 136-QChart图表之柱状图

实战PyQt5: 137-QChart图表之散点图相关推荐

  1. qchart 图表_实战PyQt5: 158-QChart图表之线条缩放显示

    线条缩放 在数据量比较的折线图或者曲线图,受图表本身显示区域大小的限制,不能精细地显示某一小块区域的数据变化,QChartView提供了方法setRubberBand()可以实现一种类似放大镜的功能, ...

  2. qchart 设置线颜色_实战PyQt5: 137-QChart图表之散点图

    散点图(scatter chart)将序列显示为一组点.值由点在图表中的位置表示.类别由图表中的不同标记表示.散点图通常用于比较跨类别的聚合数据.在QChart中,使用类QScatterSeries创 ...

  3. qchart 坐标轴设置_实战PyQt5: 156-QChart图表之更换图表主题

    图表主题 QChart定义了多种图表主题,可以创建不同风格的图表显示,在调整图表主题风格的时候,为了使整个应用的风格看起来更和谐一致,一般要使用应用程序的背景调色板来调整应用的颜色以适配图表所选的主题 ...

  4. chart.js 饼图显示百分比_实战PyQt5: 135-数据可视化之QChart绘制饼图

    饼图是数据可视图表的基本类型,在QChart中,QPieSeries, QPieSlice处理饼图的绘制. QPieSeries QPieSeries类以饼图形式显示数据.饼图系列由定义为QPieSl ...

  5. 实战PyQt5: 141-QChart图表之箱形图

    箱形图(英文:Box plot),又称为盒须图.盒式图.盒状图或箱线图,也称箱须图(Box-whisker Plot).是一种用作显示一组数据分散情况资料的统计图,经常被使用于各种领域,因形状如箱子而 ...

  6. 实战PyQt5: 143-QChart图表之堆积柱状图

    堆积柱状图将数据按组显示为彼此堆积的柱状图.堆积按类别进行.堆积柱状图将数据按组显示为柱状的条,并相互堆积.堆积按类别进行.创建堆积柱状图就像创建常规的柱状图相似,在QChart中使用QStacked ...

  7. pyecharts 显示坐标轴线_实战PyQt5: 153-QChart图表之对数坐标轴

    一些成指数变化的数据,在图表中需要使用对数坐标轴显示.QChart提供列QLogValueAxis来实现对数坐标轴. QLogValueAxis QLogValueAxis类将对数刻度添加到图表的坐标 ...

  8. 实战PyQt5: 153-QChart图表之对数坐标轴

    一些成指数变化的数据,在图表中需要使用对数坐标轴显示.QChart提供列QLogValueAxis来实现对数坐标轴. QLogValueAxis QLogValueAxis类将对数刻度添加到图表的坐标 ...

  9. 实战PyQt5: 152-QChart图表之日期时间坐标轴

    在统计图表中,使用时间作为某一坐标轴的情况非常常见,比如,常见的一年间月度销售统计,财务统计等等.在QChart中提供了日期时间坐标轴QDateTimeAxis类可以方便地将日期和时间添加到图表的坐标 ...

  10. 实战PyQt5: 154-QChart图表之多坐标轴图表

    在图表制作中,有些情况需要将不同类型数据序列显示一个图表中,以显示对比效果,但是两者的数据所对应的坐标轴是不一样的,在这种情况线需要使用多坐标轴. 使用多坐标轴 QChart中图表序列,通常需要绑定两 ...

最新文章

  1. tableau技术小积累
  2. ZOJ3531: [SDOI2014] 旅行
  3. 微型计算机电源的选购应注意哪些问题,购买小功率ups电源的注意事项
  4. Chrome 开发者工具 版本 65 新引入的 Overrides
  5. 前后数据交互(ajax) -- 初始化页面表格
  6. python中字符串注意事项
  7. 【数据库系统】文件处理系统的弊端
  8. 在CentOS7环境下部署TiDB
  9. mysql配置所有ip连接_Mysql查看用户连接数配置及每个IP的请求情况
  10. 书籍:python图像处理 Image Operators - Image Processing in Python - 2019
  11. android动态生成背景透明带文字的图片
  12. Hadoop_MapperContextInputSplitFileSplit源码浅析
  13. SQL Server 2019下载及安装教程
  14. 解决Strokeit在win8下的图标问题和开机启动问题
  15. 虚拟机模拟搭建Redis集群环境
  16. SHA-512 逻辑
  17. ILM(Index Lifecycle Management)
  18. 京东数科:无偿驰援 多款智能产品服务防控第一线
  19. mysql主从复制实验(附编译安装mysql脚本)
  20. 4.C++实现:线性插值

热门文章

  1. VARCHART XGantt 应用程序支持简介
  2. [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
  3. BIOS报警声_文伟_新浪博客
  4. rose ha 配置
  5. Blender物理引擎
  6. plot 串口助手,DataScope软件的数据,导入matlab绘图。温度曲线
  7. 鼎捷ERP二维码整体解决方案——适应于制造业、物流行业(适用于用友ERP、金蝶ERP、SAP)
  8. 纯Java代码实现 企业微信钉钉 机器人群+告警
  9. SecondCopy 2000 简单说明
  10. 【Spring源码学习篇(一)】☀️Spring5本地环境编译,超级实用!!✨