熱線電話:13121318867

登錄
首頁精彩閱讀全國多地新冠病例0增長,教你用Python畫出當下疫情最火玫瑰圖!
全國多地新冠病例0增長,教你用Python畫出當下疫情最火玫瑰圖!
2020-04-28
收藏
全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!

CDA數據分析師 出品


近日,新冠肺炎防控成果的好消息不斷。


今天我們聊聊,驚艷的疫情直觀圖。


據國家衛健委數據統計, 截止至3月10日24時,31省區市累計治愈出院病歷超6萬,達到61475例。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


3月10日,隨著江夏方艙醫院和武昌方艙醫院“休艙大吉”,武漢14家方艙醫院全部休艙。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


截止到3月12日24時,全國13地連續16天及以上無新增新冠肺炎確診病例。


看來春天真的是來了,疫情好轉的勢頭已經愈發明顯。想必許多小伙伴也一樣,越來越期待摘下口罩的那天,出門玩耍,出游踏青,吃起火鍋唱起歌。


不過C君在這里也要提醒大家,多地病歷0新增不代表零風險,一定要繃住,不要過早的松懈!繼續戴好口罩,做好個人防護,避免人群聚集,相信摘下口罩的那天也就不遠啦!


01
這道彩虹真贊!疫情玫瑰圖火了


與此同時,最近刷遍微博的這個疫情直觀圖火了!來自央視新聞官微的這個圖一經發出就令人驚艷,彩虹的配色,直觀的展現出目前全國多地病例0新增的數據。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


一時間#這道彩虹真贊#的話題在微博上閱讀達到2.6億,討論3.4萬。大家在欣喜疫情好轉的同時,都在問這個圖叫什么呀?真太驚艷了。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


微博上也出現了各種解答,有的說是餅圖,扇形圖,甚至還有的說是蝸牛圖,漩渦圖的…其實準確的來說,這個圖叫做南丁格爾玫瑰圖。


02
享譽全球的白衣天使佛羅倫斯?南丁格爾


南丁格爾玫瑰圖(Nightingale rose diagram)又名雞冠花圖、極坐標區域圖。統計學家和醫學改革家佛羅倫斯?南丁格爾 (Florence Nightingale) 曾在克里米亞戰爭期間使用這種圖表傳達士兵身亡情況,故得名。

說起南丁格爾玫瑰圖,就不得不聊一聊它的發明者,世界上第一個真正的女護士——弗羅倫斯·南丁格爾。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


弗羅倫斯·南丁格爾是著名的英國護士和統計學家,于1820年5月12日出生于意大利一個來自英國上流社會的家庭。南丁格爾在德國學習護理后,曾往倫敦的醫院工作。于1853年成為倫敦慈善醫院的護士長。


19世紀50年代,英國、法國、土耳其和俄國進行了克里米亞戰爭,當時英國戰士的死亡率高達42%。南丁格爾主動申請,她和38名女性志愿者護士的工作人員,前往戰地醫院服務。


到達戰地醫院后,南丁格爾克服種種困難,改善醫院后勤服務和環境衛生,建立醫院管理制度,提高護理質量,使傷病員死亡率從42%,急劇下降到2%。同時南丁格爾不僅表現出非凡的組織才能,而且對傷病員的關懷愛護感人至深。因此她也被稱為被稱為“克里米亞的天使”;南丁格爾經常在黑夜中提燈巡視病房,又被譽為“提燈女士”(The Lady with the Lamp)。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


由于南丁格爾的貢獻,讓昔日地位低微的護士,社會地位與形象都大為提高,成為崇高的象征?!澳隙「駹枴币渤蔀樽o士精神的代名詞。


03
數據可視化先驅南丁格爾玫瑰圖


除了出色的醫護才能,南丁格爾也有很強的數學天分,這也讓她在之后成為視覺表現和統計圖形的先驅。


在克里米亞的戰地醫院工作時,她分析過堆積如山的軍事檔案,發現在克里米亞戰役中,英軍死亡的原因是在戰場外感染疾病,及在戰場上受傷后缺乏適當護理而傷重致死,真正死在戰場上的人反而不多。


由于當時資料統計的結果往往不受人重視,她發展出一種色彩繽紛的圖表形式——南丁格爾玫瑰圖,讓數據能夠更加讓人印象深刻。她用這個圖標來表達軍醫院季節性的死亡率,向不會閱讀統計報告的國會議員,報告克里米亞戰爭的醫療條件。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


左下說明簡譯


  • 各色塊圓餅區均由圓心往外的面積來表現數字
  • 藍色區域:死于原本可避免的感染的士兵數
  • 紅色區域:因受傷過重而死亡的士兵數
  • 黑色區域:死于其它原因的士兵數
  • 1854年10月、1855年4月的紅黑區域恰好相等
  • 1856年1月與2月的藍、黑區域恰好相等
  • 1854年11月紅色區域中的黑線指出該月的黑色區域大小


正是這種清晰易懂的數據展現形式,改變了當時包括維多利亞女王在內的高層人士的認知,導致他們做出醫事改革的決策。


普通柱形圖的坐標系是直角坐標系,而南丁格爾玫瑰圖的坐標系是極坐標系,使用圓弧的半徑長短表示數據的大小。比起一般的柱狀圖,它要更有沖擊性,是非常一目了然的統計圖。


用例


那南丁格爾玫瑰圖都有哪些用例呢?


除了對比不同分類的大小,如各國制造指數的對比:


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!

Facebook 和 Twitter的用戶對比:


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


還可以用于表示披頭士歌曲的音調。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


還有最近火了的全國各地0新增彩虹圖。


04
教你用Python畫出南丁格爾玫瑰圖


那么你想知道,怎么才能做出如此驚艷的南丁格爾玫瑰圖嗎?


常見的方法有用Excel,然而做起來過程繁瑣還還原度低。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


要知道,萬物皆可Python。


除了用Excel,今天C君就來教教你,怎么用Python做南丁格爾玫瑰圖,保證高還原度:


左圖是原圖,右圖是用pyechart做的。


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


具體步驟如下:


我們使用pyecharts包進行南丁格爾玫瑰圖的繪制,如果你沒有安裝pyecharts,可以使用以下代碼進行pip安裝。

pip install pyecharts


南丁格爾玫瑰圖和餅圖類似,算是餅圖的一種變形,用法也一樣,主要用在需要查看占比的場景中。


首先需要導入我們需要使用的包,其中pandas用于數據整理,pyecharts用于繪圖。


import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts


然后準備需要的數據,所用信息來自于國家衛健委官方網站,整理之后的數據使用列表的形式進行存儲,其中provinces存儲省份名稱,num存儲確診病例連續多日零新增的數字,color_series列表存儲顏色用于后續的繪圖使用。


provinces = ['北京','上海','黑龍江','吉林','遼寧','內蒙古','新疆','西藏','青海','四川','云南','陜西','重慶',
'貴州','廣西','海南','澳門','湖南','江西','福建','安徽','浙江','江蘇','寧夏','山西','河北','天津']
num = [1,1,1,17,9,22,23,42,35,7,20,21,16,24,16,21,37,12,13,14,13,7,22,8,16,13,13]
color_series = ['#FAE927','#E9E416','#C9DA36','#9ECB3C','#6DBC49',
'#37B44E','#3DBA78','#14ADCF','#209AC9','#1E91CA',
'#2C6BA0','#2B55A1','#2D3D8E','#44388E','#6A368B'
'#7D3990','#A63F98','#C31C88','#D52178','#D5225B',
'#D02C2A','#D44C2D','#F57A34','#FA8F2F','#D99D21',
'#CF7B25','#CF7B25','#CF7B25']


接下來使用pandas對數據進行降序排列以方便后續的繪圖,并提取數據。


# 創建數據框
df = pd.DataFrame({'provinces': provinces, 'num': num})


# 降序排序
df.sort_values(by='num', ascending=False, inplace=True)


# 提取數據
v = df['provinces'].values.tolist
d = df['num'].values.tolist


最后使用Pyecharts庫中的Pie類進行圖形的繪制,代碼說明如下,其中的配置項可以在pyecharts官網 https://pyecharts.org

進行查看。圖形生成在本地的html網頁中。


# 實例化Pie類
pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px'))


# 設置顏色
pie1.set_colors(color_series)


# 添加數據,設置餅圖的半徑,是否展示成南丁格爾圖
pie1.add("", [list(z) for z in zip(v, d)],
radius=["30%", "135%"],
center=["50%", "65%"],
rosetype="area"
)


# 設置全局配置項
pie1.set_global_opts(title_opts=opts.TitleOpts(title='玫瑰圖示例'),
legend_opts=opts.LegendOpts(is_show=False),
toolbox_opts=opts.ToolboxOpts)


# 設置系列配置項
pie1.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="inside", font_size=12,
formatter=":{c}天", font_,
font_weight="bold", font_family="Microsoft YaHei"
),
)


# 生成html文檔
pie1.render('南丁格爾玫瑰圖.html')


生成的圖如下:


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


最后,再自己加一下中間的字就大功告成,對比一下原圖,是不是還原度很高呢?


全國多地新冠病例0增長,教你用Python畫出當下疫情最火<a href='/map/meiguitu/' style='color:#000;font-size:inherit;'>玫瑰圖</a>!


結語:


怎么樣,用Python作出如此絢爛的彩虹玫瑰圖,你學會了嗎?絢爛玫瑰,意味著我們終將完全戰勝疫情,大家又可以開始豐富多彩的社會生活。


不過C君還是要提醒大家一下,雖然目前疫情大有轉好,但大家一定不能掉以輕心!堅持做好防護哦,直到疫情完全解除的那一天。奧利給!

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢