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 不显示整个数据的主要内容,如果未能解决你的问题,请参考以下文章