使用matplotlib制作动态图
matplotlib( https://matplotlib.org/ )是一个著名的python绘图库,由于其灵活强大的绘图功能使得在python中可视化变得非常容易,关于matplotlib的基础知识这里不再介绍,有疑问可以去官网翻 Tutorials 和 example 学习。由于我们实际使用时常常是绘制静态图,忽略了matplotlib的动态图生成功能,同时matplotlib生成动态图的功能不是非常 友善 ,因此大部分人在真的需要制作动态图时都会选择先用matplotlib生成一系列静态图片,然后再用其它相对比较容易使用的第三方python库生成动态图,如imageio( https://imageio.readthedocs.io/en/stable/# ), 或者使用其它工具,如Matlab。这里打算简单介绍一下在matplotlib库中制作动态图的方法。
二、模块简介matplotlib的 animation 模块提供了动态图制作功能,animation类提供了两个方法来生成动态图,即 FuncAnimation 和 ArtistAnimation ,这里我们使用 FuncAnimation 方法重复调用函数来生成图片。
1. FuncAnimation 类介绍FuncAnimation 类的主要参数包括:
在 FunAnimation 类中,更新函数在每一帧中都会被重新调用,通过在更新函数中更改一些绘图函数的数据,在每一帧我们就能得到不同的图片,然后FunAnimation的Writer(后端)将这些图片组合就能得到动态图片。关于更新函数的一些需要注意的地方是:
由于matplotlib本身自带强大的绘图功能,因此我们可以不用生成图片,直接在初始绘图的基础上通过更新函数来修改绘图数据,一步直接生成动态图片,方便快捷,以下是代码:
1 |
import numpy as np |
所谓两步法是指,首先用matplotlib生成一系列静态图片,然后结合 matplotlib.image.imread 读取图片功能和 matplotlib.axes.Axes.imshow 展示图片功能,来动态地更新图片,这种方法相比于上一种方法稍微复杂,但是这种方法灵活性更高,同时也可以用来组合一些非matplotlib生成的图片。以下为代码:
1 |
import matplotlib.pyplot as plt |
得到的动态图片:
一、简介