保存matplotlib动画时,以前的帧不会被清除

时间:2016-11-12 11:40:35

标签: python animation matplotlib gif mp4

我正在制作一个matplotlib动画,其中箭头箭头在页面上移动。这不能以通常的方式实现(创建一个Quiver对象并使用动画的每个帧更新它),因为尽管有set_UVC方法用于更新 u,v components ,不是改变箭头的 x,y位置的等效方法。因此,我正在为每个帧创建一个新的Quiver对象。

当我执行plt.show()并且在屏幕上绘制动画时,这可以正常工作。箭头在页面上从左向右移动,当出现一个箭头时,前一个箭头消失,这就是我想要的。但是,当我保存为gif或mp4时,之前的箭头没有被清除,所以我最终出现了一整行箭头。我该如何解决这个问题?

我的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation

n = 21
x = np.linspace(-1.0, 1.0, num=n)
def animate(i):
    q = plt.quiver(x[i:i+1], [0], [1], [0])
    return q,

plt.gca().set_xlim([-1, 1])
anim = matplotlib.animation.FuncAnimation(plt.gcf(), animate, frames=n,
                                          repeat=True, blit=True)

plt.show()
#anim.save('anim.gif', dpi=80, writer='imagemagick')
#anim.save('anim.mp4', dpi=80, writer='ffmpeg')

1 个答案:

答案 0 :(得分:1)

根据Jean-Sébastien的建议,找到了解决方案here。我的代码现在写着:

200