數(shù)據(jù)可視化:Python+Plotly繪制新冠疫情走勢(shì)圖(三)

第二篇嘗試了采用函數(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ì)圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容