第二篇嘗試了采用函數(shù)展示多個(gè)國家/地區(qū)的對(duì)比圖,本篇?jiǎng)t開始嘗試?yán)L制動(dòng)態(tài)圖,如確診人數(shù)隨時(shí)間變化的動(dòng)態(tài)效果圖,同時(shí)也采用函數(shù)支持多個(gè)國家/地區(qū)的動(dòng)態(tài)對(duì)比。
第一篇:數(shù)據(jù)可視化:Python+Plotly繪制新冠疫情走勢(shì)圖(一)
第二篇:數(shù)據(jù)可視化:Python+Plotly繪制新冠疫情走勢(shì)圖(二)
對(duì)比各個(gè)國家的疫情數(shù)據(jù)(動(dòng)態(tài))
基本數(shù)據(jù)處理
#首先需要剔除中國各省市的數(shù)據(jù),只保留國家整體的數(shù)據(jù)
missing = df.loc[(df['provinceName']!='中國')&(df['countryName']=='中國')]#剔除provincename不是中國且countryname是中國的行,即所有省份的數(shù)據(jù)
df1 = df.drop(index=missing.index,inplace=False)#刪除掉這些行,并把結(jié)果保存到df1中
#按照國家-時(shí)間刪除兩項(xiàng)都重復(fù)的行
df_wd = df1.sort_values(by='updateTime',ascending=False).drop_duplicates(subset=['countryName','時(shí)間'],inplace=False)
#刪除continentname為空的行
df_wd.dropna(subset=['continentName'],inplace=True)
#按時(shí)間升序排列
df_wd = df_wd.sort_values(by='時(shí)間',inplace=False)
定義函數(shù),確認(rèn)時(shí)間段及需對(duì)比的國家
def df_merge(*x,date_start,date_end='2020-04-04'):
df_cry = pd.DataFrame(columns=('provinceName','province_deadCount','province_confirmedCount','時(shí)間'))
df_cry[['province_deadCount','province_confirmedCount']]=df_cry[['province_deadCount','province_confirmedCount']].astype('int')
for i in x:
temp = df_wd.loc[(df_wd['provinceName']==i)&(df_wd['時(shí)間']>= date_start)&(df_wd['時(shí)間']<= date_end)][['provinceName','province_deadCount','province_confirmedCount','時(shí)間']]
df_cry=df_cry.append(temp)
return df_cry
繪制圖像
df_cry = df_merge('意大利','美國','德國','日本',date_start='2020-03-01')
fig = px.scatter(df_cry,x='province_deadCount',y="province_confirmedCount", animation_frame="時(shí)間",
animation_group=df_cry['provinceName'],color = 'provinceName',
hover_name=df_cry['provinceName'],
size="province_confirmedCount",
title = '各個(gè)國家/地區(qū)累計(jì)確診人數(shù)-死亡人數(shù)走勢(shì)圖',
size_max=45,
log_y=True,
log_x=True,
width=None,
height= 700)
py.offline.plot(fig,filename="/covid/各個(gè)國家(地區(qū))累計(jì)確診人數(shù)-死亡人數(shù)走勢(shì)圖.html")#路徑隱去,可將該html文件保存到本地

多個(gè)國家動(dòng)態(tài)圖像截圖
對(duì)比各個(gè)國家的疫情數(shù)據(jù)(動(dòng)態(tài))
定義函數(shù),確認(rèn)時(shí)間段及需對(duì)比的城市
#默認(rèn)結(jié)束日期是最近
def df_merge_city(*x,date_start,date_end='2020-04-04'):
df_city = pd.DataFrame(columns=('cityName','city_deadCount','city_confirmedCount','時(shí)間'))
df_city[['city_deadCount','city_confirmedCount']]=df_city[['city_deadCount','city_confirmedCount']].astype('int')
for i in x:
df_1 = df.loc[(df['cityName']== i)&(df['時(shí)間']>= date_start)&(df['時(shí)間']<= date_end)].sort_values(by='updateTime',ascending=False).drop_duplicates(subset='時(shí)間',inplace=False)
df_1.sort_values(by='時(shí)間',inplace=True)
temp = df_1[['cityName','city_deadCount','city_confirmedCount','時(shí)間']]
df_city=df_city.append(temp)
return df_city
繪圖
df_city = df_merge_city('武漢','黃岡',date_start='2020-01-24',date_end='2020-03-24')
px.scatter(df_city,x='city_deadCount',y="city_confirmedCount", animation_frame="時(shí)間",
animation_group=df_city['cityName'],color = 'cityName',
hover_name=df_city['cityName'],
size="city_confirmedCount",
title = '各個(gè)國家/地區(qū)累計(jì)確診人數(shù)-死亡人數(shù)走勢(shì)圖',
size_max=45,
log_y=True,
log_x=True,
width=None,
height= 700)
py.offline.plot(fig,filename="/covid/各個(gè)國家(地區(qū))累計(jì)確診人數(shù)-死亡人數(shù)走勢(shì)圖.html")#路徑隱去,可將該html文件保存到本地

武漢-黃岡對(duì)比圖
對(duì)比各大洲的疫情數(shù)據(jù)(動(dòng)態(tài))
#使用之前用到的df_wd數(shù)據(jù)表,限制時(shí)間在3.1之后
df_wd_date = df_wd.loc[df_wd['時(shí)間']>='2020-03-01']
#畫圖
fig = px.scatter(df_wd_date,x='province_deadCount',y="province_confirmedCount", animation_frame="時(shí)間",
animation_group=df_wd_date['countryName'],color = 'continentName',
hover_name=df_wd_date['countryName'], facet_col="continentName",
#設(shè)置大洲的展示順序
category_orders = {'continentName':['亞洲', '歐洲', '北美洲','南美洲', '非洲','大洋洲','其他']},
#設(shè)置橫軸的展示標(biāo)簽
labels = {'province_deadCount':'死亡人數(shù)','province_confirmedCount':'累計(jì)確診人數(shù)',
'continentName':'大洲'},
size="province_confirmedCount",
log_y=True,
log_x=True,
title = '各大洲各個(gè)國家累計(jì)確診人數(shù)-死亡人數(shù)走勢(shì)圖',
size_max=60,
width=None,
height= 700)
py.offline.plot(fig,filename="/covid/各大洲累計(jì)確診人數(shù)-死亡人數(shù)走勢(shì)圖.html")

各大洲累計(jì)確診人數(shù)-死亡人數(shù)走勢(shì)圖