Python Matplotlib 绘制GIF常见报错
生成GIF图的示例程序
'''--------代码参考自《Python数据可视化之matplotlib 精进》 作者:刘大成--------'''
'''-----------------------这些都不是本节重点----------------------------------'''
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation #引入画动态图表的函数库
#创建图表
fig,ax=plt.subplots(1,1)
#创建x,以及x和y的函数关系
x=np.linspace(0,2*np.pi,1000)
y=np.exp(-x)*np.cos(2*np.pi*x)
line,=ax.plot(x,y) #line后面如果不加逗号,line就是list数据类型,加了逗号就是Line2D类型
#定义init函数的作用是画下一帧动画之前清空画布中的当前画面
def init():
line.set_ydata([np.nan]*len(x))
return line,
#定义animate函数的作用是绘制每一帧动画
def animate(data):
line.set_ydata(np.exp(-x)*np.cos(2*np.pi*x+float(data)/100))
return line,
'''------------------------------------------------------------------------'''
#用matplotlib.animation.FuncAnimation生成动态图表
ani=FuncAnimation(fig,animate,init_func=init,frames=1000,interval=2,blit=True)
ani.save('mymovie.mp4',writer='ffmpeg') #将动态图表保存成视频
ani.save('line.gif',dpi=80,writer='imagemagick' ) #将动态图表保存成GIF图
其中
ani.save('mymovie.mp4',writer='ffmpeg') #将动态图表保存成视频
将动态图表转换成视频的工具是ffmpeg
ani.save('line.gif',dpi=80,writer='imagemagick' ) #将动态图表保存成GIF图
将动态图表转换成GIF的工具是imagemagick
ValueError: Cannot save animation: no writers are available. Please install mencoder or ffmpeg to save animations
ffmpeg和imagemagick这两个工具可不是matplotlib自带的,但又是生成视频或者图片所必须的,所以要另外下载,否则就会因缺少工具报错:
ValueError: Cannot save animation: no writers are available. Please install mencoder or ffmpeg to save animations.
-
下载链接:https://imagemagick.org/script/download.php,需要翻墙才能下载,找到自己需要的版本,我下载的是ImageMagick-7.0版本:
-
下载完成以后安装时注意要勾选安装ffmpeg
-
安装完成以后就可以将动态图标转化成视频了。但是如果要生成gif还是有可能继续报错。
Error saving animation to file (cause: [Errno 22] Invalid argument) Stdout: b’’ StdError: b’’. It may help to re-run with --verbose-debug.
这个报错在执行生成gif图片时出现,
ani.save('line.gif',dpi=80,writer='imagemagick' ) #将动态图表保存成GIF图
- 是因为缺少了imagemagick这个工具,参考matplotlib和imagemagick 用于GIF动画保存给出的方法是添加convert.exe路径,老版本的ImageMagick 是有convert.exe,而ImageMagick-7.0是新版本没有convert.exe,只有magick.exe。解决这个问题的方法是在安装ImageMagick-7.0的时候把convert.exe也勾选上,安装完了就可以生成gif了。
- 其它安装选项为了保险起见也都勾选了。其它方法可参考:
1.matplotlib和imagemagick 用于GIF动画保存
2.Exporting animated gif using matplotlib(需要翻墙)