pyqtgraph坐标设置(137-QChart图表之散点图)
pyqtgraph坐标设置(137-QChart图表之散点图)前一篇:实战PyQt5: 136-QChart图表之柱状图QChart散点图QScatterSeries常用信号:使用QScatterSeries创建一个散点序列,并为散点设置轮廓的类型和宽度。然后使用append()函数或者流的方式添加要显示的数据,并为散点3创建了一个星星样式的标记轮廓,然后将散点图添加到图表上,为图表设置标题,最后在图表视图上显示出来。完整代码如下:importsys math fromPyQt5.QtCoreimportQt QPointF fromPyQt5.QtGuiimportQPainter QImage QPainterPath QColor QBrush fromPyQt5.QtWidgetsimportQApplication QMainwindow fromPyQt5.QtChartimport(QChartView QChart QScatterS
散点图(scatter chart)将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。在QChart中,使用类QScatterSeries创建散点图。
QScatterSeriesQScatterSeries类在散点图中显示数据。散点数据在图表上显示为点的集合。对于每个点,指定两个值来确定其在水平轴和垂直轴上的位置。下面的代码演示如何创建一个基本的散点图:
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创建了一个星星样式的标记轮廓,然后将散点图添加到图表上,为图表设置标题,最后在图表视图上显示出来。完整代码如下:
importsys math
fromPyQt5.QtCoreimportQt QPointF
fromPyQt5.QtGuiimportQPainter QImage QPainterPath QColor QBrush
fromPyQt5.QtWidgetsimportQApplication QMainwindow
fromPyQt5.QtChartimport(QChartView QChart QScatterSeries QLegendMarker QLegend)
classDemoChartScatter(QMainWindow):
def__init__(self parent=None):
super(DemoChartScatter self).__init__(parent)
#设置窗口标题
self.setWindowTitle('实战QtforPython:QChart散点图演示')
#设置窗口大小
self.resize(480 360)
self.createChart()
defcreateChart(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)
foriinrange(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)
delpainter#必须这样强制释放painter
scatterSeries2.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图表之柱状图
请多多关注,评论,收藏,点赞,和转发。