【问题标题】:Plot dynamic heatmap/ color map in while loop Python在while循环Python中绘制动态热图/颜色图
【发布时间】: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


【解决方案1】:

好吧,这将是我对自己问题的第二个答案:P 我想通了!

只需移动这一行: fig, (ax, ax2) = plt.subplots(nrows=2, sharex=True)以上while循环,这样你就可以初始化一个图形并要求这个图形保持不变,而图中的值不断变化。

在 while 循环中最后添加plt.cla(),以便从旧数据中清除绘图,否则新绘图将被覆盖/绘制在旧数据上。

【讨论】:

    猜你喜欢
    • 2016-07-20
    • 2020-10-12
    • 2021-09-28
    • 2012-04-26
    • 2016-08-09
    • 2013-07-19
    • 2021-07-24
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多