Matplotlib作业绘制

动态柱状图的形式显示1.19-2.26时间内10个城市确诊病例的变化 

# 一
%matplotlib notebook
# 导入库函数
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from matplotlib import animation

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']

df = pd.read_excel('data_ncov_(1.19-2.26).xlsx')

city=['浙江省', '广东', '河南', '湖南', '安徽', '江西', '重庆市', '江苏', '四川省','上海市']
# 时间序列转换
df['date'] = df['date'].astype('str')     # 先将字段转化为字符串
df['date'] = pd.to_datetime(df['date'])   # 再进行时间序列转换
t_d=df['date'].iloc[0:39]

fig,ax=plt.subplots(figsize=(10,6))

colors = ["r", "b", "y", "c", "g", "m", "pink", "purple", "gray", "orange"]

def update(k): 
    t = str(t_d[k])
    t_m =t[0:10]
    data_new = df[df['date'] == t_d[k]]
    citys_data_new = data_new[(data_new['省市']=='浙江省')|(data_new['省市']=='广东')|
                           (data_new['省市']=='河南')|(data_new['省市']=='湖南')|
                           (data_new['省市']=='安徽')|(data_new['省市']=='江西')|
                           (data_new['省市']=='重庆市')|(data_new['省市']=='江苏')|
                           (data_new['省市']=='四川省')|(data_new['省市']=='上海市')]
    ax.cla()
    
    x = ['安徽','广东','河南','湖南','江苏','江西','上海市','四川省','浙江省','重庆市']
    y1 = citys_data_new['确诊']

    ax.set_ylim(0,1500)

    ax.bar(x,y1,width=0.5,color=colors,)

    for x,y in zip(x,y1):
        plt.text(x,y,'%d'% y,ha='center',va = 'bottom')

    ax.set_title(f'10个城市1月19日-2月26日的疫情确诊人数数据:{t_m}')

    return ax
    
def init():
    t = str(t_d[0])
    t_m =t[0:10]

    data_0119 = df[df['date'] == '2020-01-19']
    citys_data = data_0119[(data_0119['省市']=='浙江省')|(data_0119['省市']=='广东')|
                            (data_0119['省市']=='河南')|(data_0119['省市']=='湖南')|
                            (data_0119['省市']=='安徽')|(data_0119['省市']=='江西')|
                            (data_0119['省市']=='重庆市')|(data_0119['省市']=='江苏')|
                            (data_0119['省市']=='四川省')|(data_0119['省市']=='上海市')]
    
    x = ['安徽','广东','河南','湖南','江苏','江西','上海市','四川省','浙江省','重庆市']
    y1 = citys_data['确诊']

    ax.set_ylim(0,1500)

    ax.bar(x,y1,width=0.5,color=colors)

    for x,y in zip(x,y1):
        plt.text(x,y,'%d'% y,ha='center',va = 'bottom')

    ax.set_title(f'10个城市1月19日-2月26日的疫情确诊人数数据:{t_m}')
    return ax


ani = animation.FuncAnimation(fig=fig,func=update,frames=39,init_func=init,interval=500,repeat=True)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值