【问题标题】:I cannot seem to find a way to get a list of all the points of a ScatterPlotItem in Pyqtgraph我似乎无法找到一种方法来获取 Pyqtgraph 中 ScatterPlotItem 的所有点的列表
【发布时间】:2020-03-04 13:17:06
【问题描述】:

我正在尝试访问 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的笔和画笔?

【问题讨论】:

    标签: python python-3.x pyqtgraph


    【解决方案1】:

    如果你想获得 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_())
    

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      相关资源
      最近更新 更多