今天是2020年3月29日,星期日,此时我大中华区此时已经将新冠病毒基本控制,希望其他国家也加油战胜病毒,现借各个国家疫情数据介绍一下matplotlib绘制曲线图、直方图、饼状图等
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np
#因为需要用到https的数据下载 所以引入了ssl
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
一、获取数据
confirmed_ds = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')
deaths_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv')
其中confirmed_ds、deaths_df 分别表示确诊数据以及死亡数据
confirmed_ds.head()
确诊数据二、数据处理
1.准备数据
cols = confirmed_ds.keys()
confirmed = confirmed_ds.loc[:, cols[4]:cols[-1]]
deaths = deaths_df.loc[:, cols[4]:cols[-1]]
dates = confirmed.keys()
# 美国目前病历
us_cases = []
# 意大利目前病历
italy_cases = []
# 中国目前病历
china_cases = []
# 全球目前确诊病例
world_cases = []
# 全球目前死亡数量
total_deaths = []
mortality_rate = []
for index, date in enumerate(dates):
us_cases.append(confirmed_ds[confirmed_ds['Country/Region']=='US'][date].sum())
italy_cases.append(confirmed_ds[confirmed_ds['Country/Region']=='Italy'][date].sum())
china_cases.append(confirmed_ds[confirmed_ds['Country/Region']=='China'][date].sum())
death_sum = deaths[date].sum()
confirmed_sum = confirmed[date].sum()
total_deaths.append(death_sum)
world_cases.append(confirmed_sum)
mortality_rate.append(death_sum/confirmed_sum)
#将日期01/22/2020,01/23/2020 ,01/24/2020 ... 等映射成 1,2,3...
dates_index = np.array([index+1 for index, date in enumerate(dates)]).reshape(-1,1)
三、绘制图像
1.绘制曲线图
a.单挑曲线
plt.figure(figsize=(16, 9))
plt.plot(dates_index, world_cases, color='red')
plt.title('Currently confirmed cases in the world', size=30)
plt.xlabel('Days Since 01/22/2020', size=30)
plt.ylabel('World Cases', size=30)
plt.xticks(size=20)
plt.yticks(size=20)
plt.show()
图像
目前全球确诊病例b.多条曲线
plt.figure(figsize=(15, 10))
plt.plot(dates_index, china_cases)
plt.plot(dates_index, italy_cases)
plt.plot(dates_index, us_cases)
plt.title('# of Coronavirus Cases', size=30)
plt.xlabel('Days Since 1/22/2020', size=30)
plt.ylabel('# of Cases', size=30)
plt.legend(['China', 'Italy', 'US'], prop={'size': 20})
plt.xticks(size=20)
plt.yticks(size=20)
plt.show()
图像
多个曲线c.带有水平虚线
mean_world_case = np.mean(world_cases)
plt.figure(figsize=(16, 9))
plt.plot(dates_index, world_cases,linestyle='dashed', color='red')
plt.axhline(y = mean_world_case,linestyle='--', color='black')
plt.title('Currently confirmed cases in the world', size=30)
plt.xlabel('Days Since 01/22/2020', size=30)
plt.ylabel('World Cases', size=30)
plt.xticks(size=20)
plt.yticks(size=20)
plt.show()
图像
虚线图d.条形图
plt.figure(figsize=(16, 4))
plt.barh('China', china_cases, height=0.4)
plt.barh('Italy', italy_cases,height=0.4)
plt.barh('USA', us_cases,height=0.4)
plt.title('# of Coronavirus Confirmed Cases', size=20)
plt.xticks(size=20)
plt.yticks(size=20)
plt.show()
图像
图形图e.饼状图
c = random.choices(list(mcolors.CSS4_COLORS.values()),k = 3)
plt.figure(figsize=(20,15))
plt.title('Covid-19 Confirmed Cases', size=20)
plt.pie(country_cases, colors=c)
plt.legend(country_names, loc='best', fontsize=15)
plt.show()
图像
饼状图
网友评论