gpt4 book ai didi

pyqt - 使用 PlotWidget.plot() 后如何清除数据?

转载 作者:行者123 更新时间:2023-12-05 04:00:35 26 4
gpt4 key购买 nike

这是我的代码:

import sys
import numpy as np
import pyqtgraph as pg
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout


class MyGraph(QWidget):
def __init__(self):
super(MyGraph, self).__init__()
self.resize(600, 600)

pg.setConfigOption('background', 'w')

x = np.random.normal(size=1000)
y = np.random.normal(size=1000)

self.pw = pg.PlotWidget(self)
self.pw.plot(x, y, pen=None, symbol='o', symbolBrush='r')

self.plot_btn = QPushButton('Replot', self)
self.plot_btn.clicked.connect(self.plot_slot)

self.v_layout = QVBoxLayout()
self.v_layout.addWidget(self.pw)
self.v_layout.addWidget(self.plot_btn)
self.setLayout(self.v_layout)

def plot_slot(self):
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)

# The new data is added to the existed one
self.pw.plot(x, y, pen=None, symbol='o', symbolBrush='r')


if __name__ == '__main__':
app = QApplication(sys.argv)
demo = MyGraph()
demo.show()
sys.exit(app.exec_())

每次单击按钮时,我都想清除现有数据并重新绘制新数据,但 PlotWidget 似乎没有让我这样做的相关功能。

有什么方法可以清理数据吗?

谢谢!

最佳答案

PlotWidget 的 plot 方法生成一个负责绘图的项目,在您的情况下,每次按下按钮时都会创建另一个绘图,因此您可以观察到行为。解决方案是重用

class MyGraph(QWidget):
def __init__(self):
super(MyGraph, self).__init__()
self.resize(600, 600)

pg.setConfigOption("background", "w")

x = np.random.normal(size=1000)
y = np.random.normal(size=1000)

self.pw = pg.PlotWidget(self)
self.plot = self.pw.plot(x, y, pen=None, symbol="o", symbolBrush="r")

self.plot_btn = QPushButton("Replot", self, clicked=self.plot_slot)

v_layout = QVBoxLayout(self)
v_layout.addWidget(self.pw)
v_layout.addWidget(self.plot_btn)

def plot_slot(self):
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
self.plot.setData(x, y)

关于pyqt - 使用 PlotWidget.plot() 后如何清除数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56099680/

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