Python实现动态画图并生成gif图像(matplotlib)

通过Matplotlib中的animation可以方便的生成动态的画图并保存到gif文件,示例代码如下

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

# 生成figure和绘画对象
fig = plt.figure()

plt.xlim([0,2*np.pi])
plt.ylim([-1,1])

plt.grid('on')

line, = plt.plot(0, 0, 'ro')

# 准备绘画帧数据
frames = []
for t in np.arange(0,2*np.pi,0.05):
	data = [t, np.sin(t)]
	frames.append(data)

# 定义绘画函数(对每一帧数据的处理函数)
def plot_anim(data):
	t, y = data
	line.set_data(t, y)		# 把更新的数据设置到曲线对象
	plt.pause(0.01)			# 进行一些pause以显示图像

# 调用动画绘图函数
a = anim.FuncAnimation(fig, plot_anim, frames=frames, interval=30)
a.save('anim.gif', writer='pillow')

1 首先载入所需要的模块,包括matplotlib.animation,用于后面gif动图的产生。

2 然后调用figure和plot函数生成需要的figure和line对象,这个line对象用于后面对它进行实时更新,进行动态绘制

3 然后准备绘制动图所需要的数据,这个数据就是帧数据的列表,在绘制过程中,绘制函数在每一帧会调用这些数据进行绘制。

4 定义绘制函数,对每一帧数据进行处理,绘制图像。这里把每一帧的数据设置到line曲线中,使这个曲线动态更新。这里line是一个点的绘制,实际效果就是这个点随着时间按照sin函数曲线进行移动。

5 调用FuncAnimation函数,该函数指定动态绘制函数按一定帧率对帧数据进行绘制。参数意义如下

	fig			- 图像对象
	plot_anim	- 绘制函数
	frames		- 帧数据
	interval	- 帧率(毫秒为单位)

在这个过程中,FuncAnimation会按照帧率定期调用绘制函数(plot_anim),推送每一帧的数据给到这个函数,绘制函数根据收到的帧数据进行绘制,从而形成动态的绘制效果。
6 最后调用save函数,对绘制结果进行保存,会在当前目录产生一个gif文件体现绘制的动态效果

下图为体现的效果
在这里插入图片描述
这里绘制一个sin函数的动态效果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值