今天是2020年3月29日,星期日,此時我大中華區(qū)此時已經將新冠病毒基本控制,希望其他國家也加油戰(zhàn)勝病毒,現(xiàn)借各個國家疫情數(shù)據介紹一下matplotlib繪制曲線圖、直方圖、餅狀圖等
import pandas as pd?
import matplotlib.pyplot as plt?
import matplotlib.colors as mcolors
import numpy as np
#因為需要用到https的數(shù)據下載 所以引入了ssl
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
一、獲取數(shù)據
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 分別表示確診數(shù)據以及死亡數(shù)據
confirmed_ds.head()

二、數(shù)據處理
1.準備數(shù)據
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 = []
# 全球目前死亡數(shù)量
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()
圖像
