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()

posted @ 2022-03-28 16:17  纸包鱼  阅读(226)  评论(0)    收藏  举报