我有一个动画的matplotlib图表,我试图保存到一个.gif文件,但我无法让我的图像作者工作。
我安装了imagemagick,并通过其安装页上给出的指令验证了它在我的计算机上的工作,但是当我这样做时:
anim.save('gd.gif', writer='imagemagick')
我收到以下错误消息:
MovieWriter imagemagick unavailable. Trying to use pillow instead.
但是,执行anim.save('gd.gif', writer='pillow')
会产生以下错误消息:
ValueError: not enough image data
我试着用命令conda install -c conda-forge ffmpeg
安装ffmpeg。它看起来安装正确,但我显然不知道如何将它绑定到matplotlib。
将写入器指定为ffmpeg会给出与imagemagick相同的错误消息。
我还尝试用下面的行将imagemagick的路径添加到matplotlib的配置文件路径中:
animation.convert_path: 'C:\Program Files\ImageMagick-7.0.8-Q16\magick.exe'
那是建议在这个问题中。
然而,所有这些似乎都没有起作用。
我在Windows 10上,正在使用Python3.7
发布于 2019-06-03 01:29:33
我从interweb中提取了这段代码,但最初没有起作用。
我改了台词:
rcParams['animation.convert_path'] = r'/usr/bin/convert'
指向我的convert
二进制文件,它就启动了。诚然,这是在Linux上的,但我看不出有什么不同。正如Mark在对原始问题的评论中所指出的,binary
的名称很可能取决于您正在使用的版本/操作系统。为了分离要使用的命令,我建议先在command line
上尝试这个命令。
例如,对于我来说,在Linux上:
convert -version
给予:
Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
你的里程可能会不同!尤其是当我不再记得在Windows操作系统上发出终端命令时。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import rcParams
# configure full path for ImageMagick
rcParams['animation.convert_path'] = r'/usr/bin/convert'
TWOPI = 2*np.pi
fig, ax = plt.subplots()
t = np.arange(0.0, TWOPI, 0.001)
s = np.sin(t)
l = plt.plot(t, s)
ax = plt.axis([0,TWOPI,-1,1])
redDot, = plt.plot([0], [np.sin(0)], 'ro')
def animate(i):
redDot.set_data(i, np.sin(i))
return redDot,
# create animation using the animate() function with no repeat
myAnimation = animation.FuncAnimation(fig, animate, frames=np.arange(0.0, TWOPI, 0.1), \
interval=10, blit=True, repeat=False)
# save animation at 30 frames per second
myAnimation.save('myAnimation.gif', writer='imagemagick', fps=30)
发布于 2020-05-29 06:37:35
一个快速的解决方案是在运行plt.show()
之前简单地添加anim.save('gd.gif', writer='imagemagick')
。当你关闭情节时,它将正确保存动画。
https://stackoverflow.com/questions/56423221
复制