我似乎找不到一种方法来获得Pyqtgraph中散点图项的所有点的列表

2024-10-03 21:30:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图访问Pyqtgraph中ScatterPlotItem的所有SpotItem列表,以便分别操作它们并更改它们的属性,如颜色或大小,但到目前为止,我还没有找到一种方法。我可以通过将sigClicked(self, points)连接到函数来访问单击的点,但我不知道如何获得绘图中所有点的列表。我尝试了以下方法:

scatter_plot = pyqtgraph.ScatterPlotItem(size=5)
data = scatter_plot.data

for i in data:
  scatter[i].setPen(pyqtgraph.mkPen(cosmetic=True, width=10.5, color=QtGui.QColor(210, 85, 173)), size=10)

这给了我一个错误:

'ScatterPlotItem' object does not support indexing

看起来scatter_plot.data返回的是点的属性列表,而不是点本身。但是,这不允许我直接操作属性。我可以这样做:

for i in data:
  data[i][0] = 10

这会将数据数组的第零个元素(对应于x值)更改为10。如何更改SpotItem的画笔和画笔


Tags: 方法in列表fordatasize属性plot
1条回答
网友
1楼 · 发布于 2024-10-03 21:30:41

如果要获取SpotItems,必须使用points()方法:

import random
import sys

from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg

if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)
    view = pg.GraphicsLayoutWidget()
    plt = view.addPlot()
    x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    y = [10, 8, 6, 4, 2, 20, 18, 16, 14, 12]
    s = pg.ScatterPlotItem(x, y, size=10)
    plt.addItem(s)
    view.show()

    for pt in s.points():
        # random color
        color = QtGui.QColor(*random.sample(range(255), 3))
        pt.setPen(
            pg.mkPen(cosmetic=True, width=10.5, color=color),
            size=10,
        )

    sys.exit(QtGui.QApplication.exec_())

相关问题 更多 >