使用matplotlib制作动态图表

Matploblib是Python生态中最为常用的绘图工具。然而这款工具不仅可以绘制静态图,还能借助于类似X11转发功能实现远程show。特别地,Maplotlib还可以绘制动态图,并导出成GIF。

配置

出现outfile must be *.htm or *.html错误,需要显式指定Writer,代码如下所示

1
2
3
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)
line_ani.save('lines.mp4', writer=writer)

出现RuntimeError: No MovieWriters available!,说明没有装好ffmpeg,可以使用conda install -c conda-forge ffmpeg

绘制线条坐标

FuncAnimation

在没有Matplotlib前,去查看散点图的简便做法是将CSV格式的坐标文件放到Excel里面,然后绘制散点图。配合筛选功能我们可以较为轻松地得到一个动态的形状。我们稍后发现,借助于matplotlib.animation库,我们可以直接生成动画。
Animation的主体函数是如下所示。

1
animation.FuncAnimation(fig, update, init_func=init, frames=tot)

update是最为关键的方法,它接受一个参数t,表示这是第几帧画面。

绘制线条或散点

绘制多个曲线/散点

上面的方法只能绘制一条曲线,或者散点,我们可以创建多个matplotlib.lines.Line2D,并且作为tuple返回,从而绘制多条曲线。

Reference

  1. https://stackoverflow.com/questions/49133207/python-matplotlib-funcanimation-saving
  2. https://stackoverflow.com/questions/13316397/matplotlib-animation-no-moviewriters-available
  3. https://stackoverflow.com/questions/33275189/how-can-i-make-points-of-a-python-plot-appear-over-time