python画gif图
主要用.animation模块
anim = animation.funcanimation(fig, animate, init_func=init, frames=100, interval=20, blit=true)
# fig: 是我们创建的画布
# animat: 是重点,是我们每个时刻要更新图形对象的函数,返回值和init_func相同
# init_func: 初始化函数,其返回值就是每次都要更新的对象,
# 告诉FuncAnimation在不同时刻要更新哪些图形对象
# frames: 相当于时刻t,要模拟多少帧图画,不同时刻的t相当于animat的参数
# interval: 刷新频率,毫秒
# blit: blit是一个非常重要的关键字,它告诉动画只重绘修改的部分,结合上面保存的时间,
# blit=true会使动画显示得会非常非常快
init_func会通过frames迭代器产生的变量进行不断地迭代生成
代码如下:
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import Image
from matplotlib.animation import FuncAnimation
fig, ax = plt.subplots()#这一步是生成fig(画布)变量,可以把Figure想象成一张纸(一般被称之为画布),Axes代表的则是纸中的一片区域,ax对象在其区域内进行绘图
xdata, ydata = [], []
# 注意这边的 "," 不能省
ln, = ax.plot([], [], 'r-', animated=False)#一开始图像没有移动,所以是静止的,生成一个ln区域对象
# 初始化图像(譬如 坐标范围)设置区域对象的范围
def init():
ax.set_xlim(3,8)
ax.set_ylim(3,8)
# 注意这边的 "," 也不能省
return ln,
# 将最新数据添加到图像中
def update(frame):
xdata.append(x_data[frame])
ydata.append(y_data[frame])
ln.set_data(xdata, ydata)
# 注意这边的 "," 也不能省
return ln,
# 核心方法入口
ani = FuncAnimation(fig,
update,
frames=np.arange(0,987),
interval=2,
init_func=init,
blit=True)
# 保存动态图
ani.save('tmp.gif', writer='pillow')
plt.show()

浙公网安备 33010602011771号