在matplotlib中重复停止gif图像

时间:2016-01-31 07:20:32

标签: python animation matplotlib gif

我搜索了其他类似的问题,但这并没有解决我的问题。下面是一个简单的代码,它在matplotlib中以gif图像的形式生成动画:

import numpy as np
import matplotlib.pylab as plt
import matplotlib.animation as anm

fig = plt.figure()
def draw(i):
    x = np.linspace(0, 5, num = 1000)    
    y = np.sin(x-i*0.1)
    plt.clf()
    plt.plot(x, y, 'r-') 

anim = anm.FuncAnimation(fig, draw, frames = 10, interval = 500, repeat = False)
anim.save('test.gif', fps = 1, writer = 'imagemagick')

这会生成我想要的动画但是一旦打开最终图像(使用eog),它就会不断重复。由于我将在演示文稿中呈现动画,我希望它在显示一次之后停止。您可以注意到,我在FuncAnimation中添加了repeat = False,但这并没有停止重复图像。我的代码出了什么问题?

提前致谢

1 个答案:

答案 0 :(得分:0)

我对这个问题的解决方案是从imagemagick转变为枕边的作家。

尝试以下操作:

from matplotlib.animation import FuncAnimation, PillowWriter

anim = FuncAnimation(fig, update, frames=range(1, 51), interval=.001, repeat=False)
anim.save('test.gif', dpi=80, writer=PillowWriter(fps=5))

在我看来,图像质量比使用imagemagick差一些,但这是一个更容易,更快捷的解决方案。