如何为GLScatterPlotItem渲染三角形、正方形等不同形状的散点?
使用GLScatterPlotItem自定义散点形状
当然可以,GLScatterPlotItem(PyQtGraph中的组件)支持直接设置多种内置散点形状,也支持自定义形状,具体实现方式如下:
1. 使用内置符号
通过symbol参数指定内置符号即可渲染不同形状的散点,常用内置符号包括:
'o':圆形(默认)'s':正方形't':三角形'd':菱形'+':加号'x':叉号
示例代码:
import pyqtgraph as pg from pyqtgraph.Qt import QtGui app = QtGui.QApplication([]) win = pg.GraphicsLayoutWidget() win.show() plot = win.addPlot() # 不同形状的散点数据 square_points = ( [1,2,3], [1,2,3] ) triangle_points = ( [4,5,6], [1,2,3] ) diamond_points = ( [7,8,9], [1,2,3] ) # 添加不同形状的散点 plot.addItem(pg.GLScatterPlotItem( x=square_points[0], y=square_points[1], z=[0]*3, symbol='s', size=10, color=(255,0,0) )) plot.addItem(pg.GLScatterPlotItem( x=triangle_points[0], y=triangle_points[1], z=[0]*3, symbol='t', size=10, color=(0,255,0) )) plot.addItem(pg.GLScatterPlotItem( x=diamond_points[0], y=diamond_points[1], z=[0]*3, symbol='d', size=10, color=(0,0,255) )) QtGui.QApplication.instance().exec_()
2. 自定义形状
如果内置符号无法满足需求,可以通过QPainterPath创建自定义多边形形状,再传递给symbol参数:
示例代码:
# 自定义六边形形状 custom_symbol = pg.QtGui.QPainterPath() custom_symbol.addPolygon(pg.QtGui.QPolygonF([ pg.QtCore.QPointF(0, 1), pg.QtCore.QPointF(0.866, 0.5), pg.QtCore.QPointF(0.866, -0.5), pg.QtCore.QPointF(0, -1), pg.QtCore.QPointF(-0.866, -0.5), pg.QtCore.QPointF(-0.866, 0.5), ])) # 添加自定义形状的散点 plot.addItem(pg.GLScatterPlotItem( x=[10], y=[2], z=[0], symbol=custom_symbol, size=10, color=(255,255,0) ))
内容的提问来源于stack exchange,提问作者THATS MY QUANT MY QUANTITATIVE
相关产品推荐
相关产品推荐

