如何在PyQtGraph中为单曲线设置不同点样式(无需单独绘制点)
PyQtGraph为不同数据点设置独立样式的实现方法
PyQtGraph的plot()方法返回的CurveItem默认不支持为单个点设置独立样式,想要批量给不同点设置不同画刷/画笔,推荐使用ScatterPlotItem来实现,无需逐个绘制点。
实现步骤
- 创建ScatterPlotItem实例,传入x、y数据,同时给
brush参数传入一个包含不同画刷对象的列表 - 将该实例添加到绘图部件中
示例代码
import pyqtgraph as pg from PyQt5.QtGui import QBrush, QColor # 示例数据 xs = [1, 2, 3, 4, 5] ys = [2, 4, 1, 5, 3] # 定义不同样式的画刷列表 brushes = [ QBrush(QColor(255, 0, 0)), # 红色画刷 QBrush(QColor(0, 255, 0)), # 绿色画刷 QBrush(QColor(0, 0, 255)), # 蓝色画刷 QBrush(QColor(255, 255, 0)), # 黄色画刷 QBrush(QColor(255, 0, 255)) # 洋红画刷 ] # 初始化绘图部件 graphWidget = pg.PlotWidget() # 创建散点图项,传入数据与画刷列表 scatter_item = pg.ScatterPlotItem(x=xs, y=ys, brush=brushes, size=10) # 将散点图项添加到绘图部件 graphWidget.addItem(scatter_item)
补充说明
- 如果需要保留点之间的连线,可以同时用CurveItem绘制线条,再叠加ScatterPlotItem显示带样式的点
- 除了
brush参数,还可以通过pen参数传入画笔列表设置点的边框样式,size参数统一调整点的大小
内容的提问来源于stack exchange,提问作者jbs
相关产品推荐
相关产品推荐

