【发布时间】:2018-01-31 15:49:07
【问题描述】:
我正在编写使用 matplotlib 库绘制热图的代码,我面临的问题是,我正在获得新的绘图窗口,而不是为循环中的每组新数据更新我的(相同)绘图对于每个数据集。我提到了这个很好的post,但它对我没有帮助,可能是因为在 python 中绘制图形的知识有限。这方面的任何帮助和建议都会非常有帮助!
请在下面找到我的代码(显示多个绘图窗口):
import numpy as np
import scipy.io.wavfile
import wave
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = 5,2
rate, data = scipy.io.wavfile.read('test1.wav')
chunk = np.array_split(data, 682)
l = len(chunk)
count= 0
while(count<l):
x = np.linspace(1,len(chunk[count]),num =len(chunk[count]) )
y= np.array(chunk[count])
fig, (ax, ax2) = plt.subplots(nrows=2, sharex=True)
extent = [x[0] - (x[1] - x[0]) / 2., x[-1] + (x[1] - x[0]) / 2., 0, 1]
ax.imshow(y[np.newaxis, :], cmap="plasma", aspect="auto", extent=extent)
ax.set_yticks([])
ax.set_xlim(extent[0], extent[1])
ax2.plot(x,y)
plt.tight_layout()
plt.draw()
plt.pause(0.1)
count = count +1
【问题讨论】:
-
看起来您需要在循环时创建数据结构。循环完成后,调用图形生成方法。不要在 while 循环中调用图形函数。
-
@Nicholas.. 我的代码的这个离线版本必须在线制作,以便从音频端口读取实时数据并同时绘制它,我支持你的建议,但从长远来看它对我没有帮助。 . 不过非常感谢您的建议!
标签: python-3.x matplotlib