pyqtgraph 不显示整个数据

Posted

技术标签:

【中文标题】pyqtgraph 不显示整个数据【英文标题】:pyqtgraph doesn't show the entire data 【发布时间】:2020-04-03 07:07:40 【问题描述】:

我正在运行一个 python 程序来实时绘制语音。 我基本上遵循一般教程,但它没有正确绘制。 环境:python2.7、pyside+pyqtgraph、windows10、anaconda venv

我的代码如下:

# coding:utf-8

import numpy as np
import sys

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui

import pyaudio

sample_rate = 16000
frame_length = 1024
frame_shift = 80


class PlotWindow:
    def __init__(self):

        self.win = pg.GraphicsWindow()
        self.win.setWindowTitle("realtime plotting")
        self.win.resize(1100, 400)
        self.plt = self.win.addPlot(title="updating_plot")  
        pg.setConfigOptions(antialias=True)
        #self.ymin = -1000
        #self.ymax = 1000
        self.plt.setYRange(-1.0, 1.0)  
        self.curve = self.plt.plot(pen='y')  

        self.CHUNK = frame_length  
        self.RATE = sample_rate  
        self.audio = pyaudio.PyAudio()
        self.stream = self.audio.open(format=pyaudio.paInt16,
                                      channels=1,
                                      rate=self.RATE,
                                      input=True,
                                      output=True,
                                      frames_per_buffer=self.CHUNK)



        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(5) 

        self.data = np.zeros(self.CHUNK)

    def update(self):
        self.data = self.AudioInput()
        self.curve.setData(self.data)


    def AudioInput(self):
        ret = self.stream.read(self.CHUNK)
        ret = np.frombuffer(ret, dtype="int16") / 32768
        numpydata = self.stream.read(self.CHUNK)
        numpydata = np.fromstring(numpydata, dtype=np.int16)
        #print("RET", ret)
        #print("NUMPYDATA", numpydata)
        return numpydata


if __name__ == "__main__":
    plotwin = PlotWindow()

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

绘制的图像是这样的。 似乎顶部以某种方式被修剪并且没有显示整个数据。

绘制图像

即使我使用超级简单的代码版本,它的行为方式也是一样的。

app = QApplication(sys.argv)
data = [10,20,30,40,50,60,70,80,90,100]
pg.plot(data)
sys.exit(app.exec_())

绘制图像

【问题讨论】:

self.plt.setYRange(-1.0, 10) ? 抱歉,它应该是self.plt.setYRange(-1.0, 1.0) 。我修好了。 请创建一个每个人都可以运行的最小示例。不要使用 pyaudio,使用一些随机数。 @Joe 感谢您的建议,我添加了一个简单的代码和结果。希望有人能给我任何建议…… 【参考方案1】:

请试试这个代码。

import sys

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui

app = QtGui.QApplication(sys.argv)
data = [10,20,30,40,50,60,70,80,90,100]
pg.plot(data)
sys.exit(app.exec_())

在我的机器(Linux、Python 3.6、pyqtgraph 0.10.0)上看起来非常好:

【讨论】:

感谢您的回答!不幸的是,与我在问题中提出的完全相同的图像出现了......它是关于 pyqtgraph 的配置还是什么? >在我的机器上(Linux、Python 3.6、pyqtgraph 0.10.0)这看起来非常好:也许是因为我的 python2.7??

以上是关于pyqtgraph 不显示整个数据的主要内容,如果未能解决你的问题,请参考以下文章

程序执行时pyqtgraph绘图不显示

PyQtGraph 图在 Qt MainWindow 上显示不正确

Python:PyQtGraph 不显示动画

pyqtgraph 轴未正确显示

PyQtGraph:问题循环通过绘制数据切片

从 32 位移动到 64 位后 PyQtGraph 不工作