You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 13:24:52