数据可视化——matplotlib制作动画

本文介绍了如何使用Python的matplotlib库读取Excel数据,并实现实时动态更新的折线图,同时尝试在图像上添加文本标注但未成功。随后作者通过拆分和合并图像文件的方法,展示了如何将动态图像转化为一系列静态图片,再重新组合为动画。
摘要由CSDN通过智能技术生成
import xlrd
import matplotlib.pyplot as plt
import matplotlib.animation as animation

book = xlrd.open_workbook('test.xlsx')
sheet = book.sheet_by_name('Sheet1')
x = sheet.col_values(0)
y = sheet.col_values(1)
nrows = sheet.nrows
# fig表示figure窗体, ax表示axes绘图区
fig, ax = plt.subplots(1,1)
ims = []
for i in range(1, nrows):
	im = ax.plot(x[1:i+1], y[1:i+1], color='r')
	ims.append(im)
ani = animation.ArtistAnimation(fig, ims, interval=100, repeat_delay=1000)
ani.save('test.gif', writer='pillow')
plt.show()

test.xlsx部分内容如下:
在这里插入图片描述
运行结果:
在这里插入图片描述
思考:
欲使用ax.text(x[i],y[i],‘x:%d y:%d’ % (x[i],y[i]))在图像中添加文本,实时显示x,y坐标值,但测试不成功。后来想到一个笨拙的办法,那就是先得到N张ax.plot(x[1:i+1], y[1:i+1], color=‘r’)图像,再得到N张ax.text(x[i],y[i],‘x:%d y:%d’ % (x[i],y[i]))图像,将它们两两合并,得到N张合并后的图像,最后将其制作成动画。

将gif动画拆分成N张图像:

import os
from PIL import Image
image = Image.open('test.gif')
try:
	i = 0
	while True:
		image.seek(i)
		image.save('images\\'+str(i)+'.png')
		i += 1
except:
	pass

将N张图像合成gif动画:

import os
import imageio
images = []
for filename in os.listdir('images'):
	images.append(imageio.imread('images\\' + filename))
imageio.mimsave('test.gif',images,'GIF',duration=0.1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值