Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用新数据点更新Pyqtgraph绘图_Python_Python 2.7_Pyqt_Pyqt4_Pyqtgraph - Fatal编程技术网

Python 无法使用新数据点更新Pyqtgraph绘图

Python 无法使用新数据点更新Pyqtgraph绘图,python,python-2.7,pyqt,pyqt4,pyqtgraph,Python,Python 2.7,Pyqt,Pyqt4,Pyqtgraph,我正在制作我的第一个Pyqt图plot,它将被添加到Pyqt图形用户界面中。按下按钮addBtn时,应将新数据点添加到pyqtgraph绘图中 问题:使用setData函数将新的x和y数据添加为np.array对象返回错误: TypeError: setData(self, int, QVariant): argument 1 has unexpected type 'numpy.ndarray' 我们如何解决这个问题 import sys from PyQt4.QtGui import *

我正在制作我的第一个
Pyqt图
plot,它将被添加到Pyqt图形用户界面中。按下按钮
addBtn
时,应将新数据点添加到
pyqtgraph
绘图中

问题:使用
setData
函数将新的x和y数据添加为
np.array
对象返回错误:

TypeError: setData(self, int, QVariant): argument 1 has unexpected type 'numpy.ndarray'
我们如何解决这个问题

import sys 
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import pyqtgraph as pg
import time
import numpy as np


class Screen(QMainWindow):
    def __init__(self):
        super(Screen, self).__init__()
        self.initUI()

    def initUI(self):
        self.x = np.array([1,2,3,4])
        self.y = np.array([1,4,9,16])
        self.plt = pg.PlotWidget()
        self.plt.plot(self.x, self.y)

        addBtn = QPushButton('Add Datapoint')
        addBtn.clicked.connect(self.addDataToPlot)
        addBtn.show()

        mainLayout = QVBoxLayout()
        mainLayout.addWidget(addBtn)
        mainLayout.addWidget(self.plt)

        self.mainFrame = QWidget()
        self.mainFrame.setLayout(mainLayout)
        self.setCentralWidget(self.mainFrame)

    def addDataToPlot(self):
        data = {
            'x': 5,
            'y': 25
        }
        np.append(self.x, data['x'])
        np.append(self.y, data['y'])
        self.plt.setData(self.x, self.y)


app = QApplication(sys.argv)
window = Screen()
window.show()
sys.exit(app.exec_())

您必须更新绘图中的数据,而不是小部件中的数据,为此,我们将其保存为属性

def initUI(self):
    self.x = np.array([1,2,3,4])
    self.y = np.array([1,4,9,16])
    self.plt = pg.PlotWidget()
    self.plot = self.plt.plot(self.x, self.y)
    [...]
此外,在您的情况下,如果没有更新,函数append将返回一个连接输入数据的对象,因此您必须保存它

def addDataToPlot(self):
    [...]
    self.x = np.append(self.x, data['x'])
    self.y =np.append(self.y, data['y'])
    self.plot.setData(self.x, self.y)

它再次绘制所有绘图,是否有任何东西只需将一个像素添加到先前的绘图中?