在使用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
发表回复