散点图(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,mathfrom PyQt5.QtCore import Qt, QPointFfrom PyQt5.QtGui import QPainter, QImage, QPainterPath, QColor, QBrushfrom PyQt5.QtWidgets import QApplication, QMainWindowfrom 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 <
运行结果如下图:
本文知识点
- 什么是散点图。
- 使用QScatterSeries序列绘制散点图。
- 为散点图定制标记样式。
前一篇:实战PyQt5: 136-QChart图表之柱状图
请多多关注,评论,收藏,点赞,和转发。