有的候想知道不同参数,在不同时刻下的连续图形,这个在模拟仿真时特别有用。
其实原理很简单:就是创建一幅图,定义图形中曲线,标注等各个对象,然后在不同时刻,更新这些对象的数据,matplotlib会根据新的数据自动刷新图形。主要动过matplotlib.animation.FuncAnimation:类实现
class animation.FuncAnimation: 主要参数
fig:创建的画布
func:每一帧调用一次,更新数据的函数,返回值要与init_func相同,可迭代的图形对象
init_func:初始化函数,返回值就是初次更新的对象
frames:模拟多少帧画面,相当于时间轴,不同时刻的t,相当于func的参数
interval:刷新频率,单位ms
blit:告诉动画只重绘修改部分,blit=true会显示更快
实例1:动态正弦曲线
import matplotlib.pyplot as plt import numpy as np from matplotlib import animation #创建画布 fig,ax = plt.subplots() x=np.arange(0, 2*np.pi, 0.01) #构造曲线的数据 line, =ax.plot(x, np.sin(x)) #更新曲线数据 def animate(i): print(i) line.set_ydata(np.sin(x+i/10)) return line, def init(): line.set_ydata(np.sin(x)) return line, ani = animation.FuncAnimation(fig=fig,func=animate,init_func=init,interval=20) plt.show()