Python 删除/删除PyQtGraph中的图例

Python 删除/删除PyQtGraph中的图例,python,pyqt5,data-visualization,pyqtgraph,Python,Pyqt5,Data Visualization,Pyqtgraph,在实时图表上创建两条线,并添加图例。在下一次更新时,使用self.pw.clear()删除图表上的行 但是图例不会被删除,每次更新时,都会添加一个新的图例实例,其中有很多图例,并且计划更新的FPS会快速下降 此处显示Clear():“从ViewBox中删除所有项目。” 试图清除/删除项目-尚未起到帮助作用(语法不正确,或者过程调用不正确) 如何在更新图表时删除图例或停止创建多个图例? import random from PyQt5 import QtGui import pyqtgraph a

在实时图表上创建两条线,并添加图例。在下一次更新时,使用self.pw.clear()删除图表上的行

但是图例不会被删除,每次更新时,都会添加一个新的图例实例,其中有很多图例,并且计划更新的FPS会快速下降

此处显示Clear():“从ViewBox中删除所有项目。”

试图清除/删除项目-尚未起到帮助作用(语法不正确,或者过程调用不正确)

如何在更新图表时删除图例或停止创建多个图例?

import random
from PyQt5 import QtGui
import pyqtgraph as pg
import sys

class Mainwindow(QtGui.QMainWindow):
    def __init__(self, parent):
        super(Mainwindow, self).__init__()
        self.centralWidget = QtGui.QWidget()
        self.setCentralWidget(self.centralWidget)
        self.resize(1000, 500)

        self.vbox = QtGui.QVBoxLayout()
        self.pw = pg.PlotWidget()
        self.vbox.addWidget(self.pw)
        self.centralWidget.setLayout(self.vbox)

        # Update chart
        self.timer = pg.QtCore.QTimer()
        self.timer.setSingleShot(False)
        self.timer.timeout.connect(self.update)
        self.timer.start(10)

    def update(self):
        x = []
        y = []
        z = []
        for i in range(10000):
            x.append(i)
            y.append(random.uniform(0, 1))
            z.append(1 + random.uniform(0, 1))

        self.pw.clear()
        line_red = pg.PlotCurveItem(x, y, clear=True, pen='r', name='Red')
        line_yellow = pg.PlotCurveItem(x, z, clear=True, pen='y', name='Yellow')
        self.pw.addItem(line_red)
        self.pw.addItem(line_yellow)
        self.pw.addLegend()

app = QtGui.QApplication(sys.argv)
ex = Mainwindow(app)
ex.show()
sys.exit(app.exec_())
你有一个,而不是问如何更新绘图?关于如何消除重复图例的问题?。因此,我将指出根本问题的解决方案

考虑到上述情况,逻辑是只创建一次项,并使用
setData()
方法更新信息

随机导入
导入系统
将pyqtgraph作为pg导入
从pyqtgraph.Qt导入QtGui
类主窗口(QtGui.QMainWindow):
定义初始化(自身,父级):
超级(主窗口,自我)。\uuuu初始化
self.centralWidget=QtGui.QWidget()
self.setCentralWidget(self.centralWidget)
自我调整大小(1000500)
vbox=QtGui.QVBoxLayout(self.centralWidget)
self.pw=pg.PlotWidget()
self.pw.addLegend()
vbox.addWidget(self.pw)
#更新图表
self.timer=pg.QtCore.QTimer()
self.timer.setSingleShot(假)
self.timer.timeout.connect(self.update)
自动定时器启动(10)
self.line_red=pg.PlotCurveItem(clear=True,pen=“r”,name=“red”)
self.line_yellow=pg.PlotCurveItem(clear=True,pen=“y”,name=“yellow”)
self.pw.addItem(self.line_红色)
self.pw.addItem(self.line_黄色)
def更新(自我):
x=[]
y=[]
z=[]
对于范围(10000)内的i:
x、 附加(i)
y、 追加(随机一致(0,1))
z、 追加(1+随机一致(0,1))
自连线设置数据(x,y)
自测线_黄色设置数据(x,z)
如果名称=“\uuuuu main\uuuuuuuu”:
app=QtGui.QApplication(sys.argv)
ex=主窗口(应用程序)
例如:show()
sys.exit(app.exec_())

是的,现在我明白我的错误了。您的代码工作正常。另外,由于您使用setData()的决定,我还比较了您和我的代码的性能(都没有图例)-您的代码为FPS增加了+14..19%。酷!