我正在研究一些事情:我需要在时间和表面上诋毁我们的进步,让我们说出热度。
我有一些麻烦用轮廓动画pcolormesh:轮廓确实是动画的,但pcolormesh不是;我只得到第一个永远不会被替换的。
我的代码很像这样:
#x, y and z_temp are previously extracted from an Excel file
z=np.zeros(time,y,x)
for t in range(time):
for m in range(len(y)):
for n in range(len(x)):
z[t][m][n] = z_temp[t]
x,y=np.meshgrid(x,y)
im = ax.contour(x, y, z[0], 20)
fond = ax.pcolormesh(x, y, z[0], cmap=cm.get_cmap('afmhot_r'))
def animate(t):
print(t)
ax.cla()
fond = ax.pcolormesh(x, y, z[t], cmap=cm.get_cmap('afmhot_r'))
im = ax.contour(x, y, z[t], 20, cmap=cm.get_cmap('cool'))
return im, fond,
ani = anima.FuncAnimation(fig, animate, frames=time, interval=400, repeat_delay=1000)
plt.show()
我试图从这篇文章中获得灵感:Animation with pcolormesh routine in matplotlib, how do I initialize the data? 以及这次处理动画的其他人,但我似乎无法结合我找到的解决方案。根据链接的解决方案,我最终什么都没有......
有人可以帮忙吗?
编辑:
也许我应该更加具体地说明我的其他尝试。我把“def animate(t)”部分替换为只让我获得轮廓的东西,但仍然是动画的:
def init():
fond.set_array(np.array([]))
return im, fond,
def animate(t):
print(t)
ax.cla()
fond.set_array(z[t])
im = ax.contour(x, y, z[t], 20, cmap=cm.get_cmap('cool'))
return im, fond,
答案 0 :(得分:1)
除了一些编码错误,我不明白为什么这在功能上不起作用。这个最小的示例更新了pcolormesh
和contour
,没有任何问题。你能测试一下它是否适合你吗?
import numpy as np
import matplotlib.pylab as plt
import matplotlib.animation as animation
time = 10
x = np.linspace(0,5,6)
y = np.linspace(0,6,7)
z = np.random.random((time, y.size, x.size))
fig = plt.figure()
ax = plt.subplot(111)
im = ax.contour(x, y, z[0], 20)
fond = ax.pcolormesh(x, y, z[0], cmap=plt.cm.get_cmap('afmhot_r'))
def animate(t):
print(t)
ax.cla()
fond = ax.pcolormesh(x, y, z[t], cmap=plt.cm.get_cmap('afmhot_r'))
im = ax.contour(x, y, z[t], 20, cmap=plt.cm.get_cmap('cool'))
return im, fond,
ani = animation.FuncAnimation(fig, animate, frames=time, interval=400, repeat_delay=1000)
plt.show()