python科学绘图-动态数据变化图像的绘制(matplotlib库、pillow库)

网上经常有一些视频向我们展示数据的变化,比如“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的使用方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值