Matplotlib生成动画

在使用matplotlib进行数据可是化的时候,将数据生成动画来展示有时候更加直观,便于理解数据.

本文提供了两个示例程序使用matplotlib生成gif格式的动画.

示例1

直接贴代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation


# 定义figure
fig, ax = plt.subplots()

# 定义数据
x = np.arange(0, 2 * np.pi, 0.01)
# line, 表示只取返回值中的第一个元素
line, = ax.plot(x, np.sin(x))

# 定义动画的更新
def update(i):
    line.set_ydata(np.sin(x + i/10))
    return line,

# 定义动画的初始值
def init():
    line.set_ydata(np.sin(x))
    return line,

# 创建动画
# fig 进行动画绘制的figure
# func 自定义动画函数,即传入刚定义的函数animate
# frames 动画长度,一次循环包含的帧数
# init_func 自定义开始帧,即传入刚定义的函数init
# interval 更新频率,以ms计
# blit 选择更新所有点,还是仅更新产生变化的点。应选择True,但mac用户请选择False,否则无法显示动画
ani = animation.FuncAnimation(fig = fig, func = update, init_func = init, interval = 10, blit = False, frames = 200)

# 展示动画
plt.show()

# 动画保存,fps表示帧率,dpi表示分辨率

ani.save('sin.gif', writer = 'imagemagick', fps = 30, dpi = 100)

这是上面代码生成的gif图片

示例2

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
  
start = [1, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0] 
  
metric =[[0.03, 0.86, 0.65, 0.34, 0.34, 0.02, 0.22, 0.74, 0.66, 0.65], 
     [0.43, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0.55], 
     [0.66, 0.75, 0.01, 0.94, 0.72, 0.77, 0.20, 0.66, 0.81, 0.52] 
    ] 
  
fig = plt.figure() 
window = fig.add_subplot(111) 
line, = window.plot(start) 
#如果是参数是list,则默认每次取list中的一个元素,即metric[0],metric[1],... 
def update(data): 
  line.set_ydata(data) 
  return line, 

ani = animation.FuncAnimation(fig, update, metric, interval=2*1000) 
ani.save('sin1.gif', writer = 'imagemagick', fps = 5, dpi = 100)
plt.show()

这是上面代码生成的gif图片

使用matplotlib较为容易生成动图,具体可参考matplotlib animation api

The End


已发布

分类

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注