如何在pyqtgraph中实现matplotlib的'|'符号散点图效果
pyqtgraph实现
|竖线散点标记的两种方案 方案1:直接传入字符作为标记(简便)
pyqtgraph原生支持直接传入单个字符作为散点标记样式,无需额外配置,直接调用即可:
import pyqtgraph as pg import numpy as np # 初始化画布 plot_widget = pg.plot() # 生成测试数据 x = np.random.random(100) y = np.random.random(100) # 绘制散点,symbol直接指定为'|' plot_widget.plot( x, y, pen=None, # 不绘制连线 symbol='|', symbolSize=12, # 调整竖线高度 symbolPen=pg.mkPen(color='red', width=2) # 调整竖线颜色、粗细 )
方案2:自定义QPainterPath注册符号(高性能,适合大量散点)
如果需要绘制上万级别的散点,自定义路径的渲染性能远高于字符渲染,可提前注册自定义符号到pyqtgraph的符号库:
import pyqtgraph as pg from pyqtgraph import ScatterPlotItem from qtpy.QtGui import QPainterPath import numpy as np # 定义竖线形状路径 def get_vline_path(): path = QPainterPath() # 路径原点为散点中心,绘制上下长度各0.5单位的竖线 path.moveTo(0, -0.5) path.lineTo(0, 0.5) return path # 将自定义符号注册到pyqtgraph全局符号库,命名为vline ScatterPlotItem.Symbols['vline'] = get_vline_path() # 绘图调用 plot_widget = pg.plot() x = np.random.random(10000) y = np.random.random(10000) plot_widget.plot( x, y, pen=None, symbol='vline', symbolSize=10, symbolPen=pg.mkPen(color='blue', width=1.5) )
补充说明
- 两种方案都可以通过
symbolSize参数调整竖线的高度,通过symbolPen的width参数调整竖线的粗细,完全匹配matplotlib中|标记的显示效果 - 大量散点场景优先选择方案2,CPU占用更低,渲染更流畅
内容的提问来源于stack exchange,提问作者Oier Arcelus
相关产品推荐
相关产品推荐

