gpt4 book ai didi

python - 在 PyQtGraph 中移除/删除图例

转载 作者:行者123 更新时间:2023-12-04 10:22:21 25 4
gpt4 key购买 nike

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

但是图例并没有被删除,而且每次更新都会添加一个新的图例实例,数量很多,而且计划更新的 FPS 会迅速下降。

在这里http://www.pyqtgraph.org/documentation/graphicsItems/plotitem.html 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_())

最佳答案

你有一个 XY problem ,而不是询问如何更新情节? questions 如何消除重复的图例?。因此,我将指出潜在问题的解决方案。

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

import random
import sys

import pyqtgraph as pg
from pyqtgraph.Qt import QtGui


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

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

# Update chart
self.timer = pg.QtCore.QTimer()
self.timer.setSingleShot(False)
self.timer.timeout.connect(self.update)
self.timer.start(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_red)
self.pw.addItem(self.line_yellow)

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.line_red.setData(x, y)
self.line_yellow.setData(x, z)


if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
ex = Mainwindow(app)
ex.show()
sys.exit(app.exec_())

关于python - 在 PyQtGraph 中移除/删除图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60798530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com