网上经常有一些视频向我们展示数据的变化,比如“100年来世界每个国家的GDP变化”,然后来一个变化的数据,基于这种想法
下面我们来适用python的matplotlib和pillow库进行制作一个gif动图来展示数据变化
先安装库
pip install pillow
pip install matplotlib
准备数据
我们假设四种手机100年的销量变化(假定数据)
d = np.array((np.arange(0, 300, 3), np.arange(0, 400, 4), np.arange(400, 300, -1), np.arange(1000, 0, -10))).T # 数据 x = ['apple', 'huawei', 'xiaomi', 'vivo'] # x轴 t = np.arange(2000,2100) # 标题 sp = rf"{os.environ['USERPROFILE']}\Desktop\output" # 保存路径为桌面
其中x是手机品牌,t是时间序列,d是数据变化,sp是保存路径,这里我设置为桌面
整体代码如下:
import os
from typing import Sequence
import numpy as np
from matplotlib import pyplot as plt
import io
from PIL import Image
def movingImage(dss: Sequence[Sequence], xs: Sequence, titles:Sequence,savePath: str):
imgs = []
for i in range(len(dss)):
buf = io.BytesIO()
plt.figure()
plt.barh(xs, dss[i])
plt.title(titles[i])
plt.savefig(buf, format='png')
buf.seek(0)
image = Image.open(buf)
imgs.append(image)
plt.close() # 关闭当前图片减少运存占用
imgs[0].save(savePath+'.gif', save_all=True, append_images=imgs[1:], duration=50, loop=0)
if __name__ == '__main__':
# 假设四种手机100年的销量变化
d = np.array((np.arange(0, 300, 3),
np.arange(0, 400, 4),
np.arange(400, 300, -1),
np.arange(1000, 0, -10))).T # 数据
x = ['apple', 'huawei', 'xiaomi', 'vivo'] # x轴
t = np.arange(2000,2100) # 标题
sp = rf"{os.environ['USERPROFILE']}\Desktop\output" # 保存路径为桌面
movingImage(d, x,t, sp)
运行之后你会在桌面看见一个output.gif的动图文件
效果如下:
为了展示使用方法,所以图片做的较为粗糙,想要美化的话就去学matplotlib的使用方法