动态柱状图的形式显示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)