Python 停止gif图像在matplotlib中重复

Python 停止gif图像在matplotlib中重复,python,animation,matplotlib,gif,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.

我搜索了其他类似的问题,但这并没有解决我的问题。下面是在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),它就会不断重复。因为我将在演示文稿中演示动画,所以我希望它在显示一次后停止。正如您所注意到的,我在动画中添加了
repeat=False
,但这并没有停止重复图像。我的代码有什么问题


提前感谢

我解决这个问题的办法是从imagemagick变成pillow,成为一名作家

请尝试以下操作:

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要差一点,但这是一个更简单、更快的解决方案。

这没有很好的文档记录-但是尝试将
extra_args=['-loop','1']
添加到
save
的调用中,例如
anim.save('test.gif',fps=1,writer='imagemagick',extra_args=['-loop','1'])
。如果这样做有效,我会将其作为完整答案添加,但目前我不确定,也没有
imagemagick
可供检查。
extra_args
直接传递到图像编码器。否。不幸的是,它不能工作。您能让它产生一些调试输出来查找它正在运行的ImageMagick命令吗?它可能包含单词
convert
。或者,您可以运行它,同时尝试
while:;do ps-aef | grep“convert”| grep“test.gif”;完成
也许你可以将文件作为PNG文件写入磁盘,然后使用ImageMagick自己与
convert frame*PNG-loop 1 animation.gif
@SnehalShekatkar Arggh-在源代码中找到了必要的行,看起来它们像是硬代码
-loop 0
:看,我认为这可能是一个bug,因为该工具默认为零。我认为正因为如此,任何用户指定的
-loop
都将被忽略。我认为您必须按照@marksetchell输出帧,并手动转换,如果您不希望它循环:(