使用pcolormesh的Matplotlib.animation.FuncAnimation

时间:2016-09-15 23:21:55

标签: python-3.x animation matplotlib

Python 3.5,windows 10 Pro。

我正在尝试连续绘制一个8x8像素数组(为了问题我只使用随机数据,但实际上我是从串口读取的。)

我可以使用while循环来完成它,但我需要切换到matplotlib.animation.FuncAnimation,我无法让它工作。我已经尝试查看帮助文件,并尝试按照matplotlib.org here中的示例进行操作,但我无法遵循它。

有人可以帮我弄清楚如何使用FuncAnimation和pcolormesh连续绘制8x8像素数组吗?这是我到目前为止所得到的:

import scipy as sp
import matplotlib.pyplot as plt
from matplotlib import animation

plt.close('all')

y = sp.rand(64).reshape([8,8])

def do_something():
    y = sp.rand(64).reshape([8,8])
    fig_plot.set_data(y)
    return fig_plot,

fig1 = plt.figure(1,facecolor = 'w')
plt.clf()

fig_plot = plt.pcolormesh(y)

fig_ani = animation.FuncAnimation(fig1,do_something)    
plt.show()

如果您想查看while循环代码,只是为了确切知道我要重现的内容,请参阅下文。

import scipy as sp
import matplotlib.pyplot as plt

plt.figure(1)
plt.clf()
while True:
    y = sp.rand(64).reshape([8,8])
    plt.pcolormesh(y)
    plt.show()
    plt.pause(.000001)

1 个答案:

答案 0 :(得分:0)

我能够使用imshow而不是pcolormesh找到解决方案。如果其他人正在努力解决我遇到的同样问题,我已经发布了下面的工作代码。

import scipy as sp
import matplotlib.pyplot as plt
import matplotlib.animation as animation

Hz = sp.rand(64).reshape([8,8])  # initalize with random data

fig = plt.figure(1,facecolor='w')

ax = plt.axes()
im = ax.imshow(Hz)
im.set_data(sp.zeros(Hz.shape))

def update_data(n):
    Hz = sp.rand(64).reshape([8,8])  # More random data
    im.set_data(Hz)
    return

ani = animation.FuncAnimation(fig, update_data, interval = 10, blit = False, repeat = False)
fig.show()