使用pyqtgraph进行实时绘图

问题描述

我正在尝试使用pyqtgraph在python中创建实时绘图。从仪器接收的数据是每次更新300个值的数组,我希望可以实时绘制数据。

from pyvirtualbench import PyVirtualBench,PyVirtualBenchException,Waveform
from itertools import count
import numpy as np
from pyqtgraph.Qt import QtGui,QtCore
import pyqtgraph as pg
import  time
import sys

virtualbench = PyVirtualBench('VirtualBench')
    # oscilloscope
mso = virtualbench.acquire_mixed_signal_oscilloscope()
# Configure the acquisition using auto setup
mso.auto_setup()
    # Query the configuration that was chosen to properly interpret the data.
sample_rate,acquisition_time,pretrigger_time,sampling_mode = mso.query_timing()
channels = mso.query_enabled_analog_channels()
print(channels,sample_rate,sampling_mode)    
class Graph(object):
    def __init__(self):        
        pg.setConfigOptions(antialias=True)
        self.app = QtGui.QApplication([])
        self.win = pg.GraphicsWindow()
        self.win.setwindowTitle('Spectrum Analyzer')
        self.win.setGeometry(5,115,1910,1070)

        self.waveform = self.win.addplot(
            title='WAVEFORM',row=1,col=1)

      # virtual bench stuff
     
        self.sample_rate,self.acquisition_time,self.pretrigger_time,self.sampling_mode = mso.query_timing()
        self. channels = mso.query_enabled_analog_channels()

    def start(self):
        if (sys.flags.interactive != 1) or not hasattr(QtCore,'PYQT_VERSION'):
            QtGui.QApplication.instance().exec_()

    def set_plotdata(self,data_y):
        self.waveform.setData(data_y)
        self.waveform = self.waveform.plot(pen='c',width=3)
        self.waveform.setYRange(0,255,padding=0)
        self.waveform.setxrange(0,2 * 100,padding=0.005)
                
    def update(self):
        mso.run()
        analog_data,analog_data_stride,analog_t0,digital_data,digital_timestamps,digital_t0,trigger_timestamp,trigger_reason = mso.read_analog_digital_u64()
        arr = np.array(analog_data[0:1000])
       
        self.set_plotdata(data_y=arr)

    def animation(self):
        timer = QtCore.QTimer()
        timer.timeout.connect(self.update)
        timer.start(50)
        self.start()
    if __name__ == '__main__':

     Virtual_bench = Graph()
     Virtual_bench.animation()

我遇到以下错误

TypeError: argument 1 has unexpected type `numpy.ndarray`

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)