CDA數據分析師 出品
近日,新冠肺炎防控成果的好消息不斷。
今天我們聊聊,驚豔的疫情直觀圖。
據國家衛健委數據統計, 截止至3月10日24時,31省區市累計治癒出院病歷超6萬,達到61475例。
3月10日,隨著江夏方艙醫院和武昌方艙醫院「休艙大吉」,武漢14家方艙醫院全部休艙。
截止到3月12日24時,全國13地連續16天及以上無新增新冠肺炎確診病例。
看來春天真的是來了,疫情好轉的勢頭已經愈發明顯。想必許多小夥伴也一樣,越來越期待摘下口罩的那天,出門玩耍,出遊踏青,吃起火鍋唱起歌。
不過C君在這裡也要提醒大家,多地病歷0新增不代表零風險,一定要繃住,不要過早的鬆懈!繼續戴好口罩,做好個人防護,避免人群聚集,相信摘下口罩的那天也就不遠啦!
01這道彩虹真贊!疫情玫瑰圖火了
與此同時,最近刷遍微博的這個疫情直觀圖火了!來自央視新聞官微的這個圖一經發出就令人驚豔,彩虹的配色,直觀的展現出目前全國多地病例0新增的數據。
一時間#這道彩虹真贊#的話題在微博上閱讀達到2.6億,討論3.4萬。大家在欣喜疫情好轉的同時,都在問這個圖叫什麼呀?真太驚豔了。
微博上也出現了各種解答,有的說是餅圖,扇形圖,甚至還有的說是蝸牛圖,漩渦圖的…其實準確的來說,這個圖叫做南丁格爾玫瑰圖。
02享譽全球的白衣天使佛羅倫斯南丁格爾
南丁格爾玫瑰圖(Nightingale rose diagram)又名雞冠花圖、極坐標區域圖。統計學家和醫學改革家佛羅倫斯南丁格爾 (Florence Nightingale) 曾在克裡米亞戰爭期間使用這種圖表傳達士兵身亡情況,故得名。
說起南丁格爾玫瑰圖,就不得不聊一聊它的發明者,世界上第一個真正的女護士——弗羅倫斯·南丁格爾。
弗羅倫斯·南丁格爾是著名的英國護士和統計學家,於1820年5月12日出生於義大利一個來自英國上流社會的家庭。南丁格爾在德國學習護理後,曾往倫敦的醫院工作。於1853年成為倫敦慈善醫院的護士長。
19世紀50年代,英國、法國、土耳其和俄國進行了克裡米亞戰爭,當時英國戰士的死亡率高達42%。南丁格爾主動申請,她和38名女性志願者護士的工作人員,前往戰地醫院服務。
到達戰地醫院後,南丁格爾克服種種困難,改善醫院後勤服務和環境衛生,建立醫院管理制度,提高護理質量,使傷病員死亡率從42%,急劇下降到2%。同時南丁格爾不僅表現出非凡的組織才能,而且對傷病員的關懷愛護感人至深。因此她也被稱為被稱為「克裡米亞的天使」;南丁格爾經常在黑夜中提燈巡視病房,又被譽為「提燈女士」(The Lady with the Lamp)。
由於南丁格爾的貢獻,讓昔日地位低微的護士,社會地位與形象都大為提高,成為崇高的象徵。「南丁格爾」也成為護士精神的代名詞。
03數據可視化先驅南丁格爾玫瑰圖
除了出色的醫護才能,南丁格爾也有很強的數學天分,這也讓她在之後成為視覺表現和統計圖形的先驅。
在克裡米亞的戰地醫院工作時,她分析過堆積如山的軍事檔案,發現在克裡米亞戰役中,英軍死亡的原因是在戰場外感染疾病,及在戰場上受傷後缺乏適當護理而傷重致死,真正死在戰場上的人反而不多。
由於當時資料統計的結果往往不受人重視,她發展出一種色彩繽紛的圖表形式——南丁格爾玫瑰圖,讓數據能夠更加讓人印象深刻。她用這個圖標來表達軍醫院季節性的死亡率,向不會閱讀統計報告的國會議員,報告克裡米亞戰爭的醫療條件。
左下說明簡譯
各色塊圓餅區均由圓心往外的面積來表現數字藍色區域:死於原本可避免的感染的士兵數紅色區域:因受傷過重而死亡的士兵數黑色區域:死於其它原因的士兵數1854年10月、1855年4月的紅黑區域恰好相等1856年1月與2月的藍、黑區域恰好相等1854年11月紅色區域中的黑線指出該月的黑色區域大小正是這種清晰易懂的數據展現形式,改變了當時包括維多利亞女王在內的高層人士的認知,導致他們做出醫事改革的決策。
普通柱形圖的坐標系是直角坐標系,而南丁格爾玫瑰圖的坐標系是極坐標系,使用圓弧的半徑長短表示數據的大小。比起一般的柱狀圖,它要更有衝擊性,是非常一目了然的統計圖。
用例
那南丁格爾玫瑰圖都有哪些用例呢?
除了對比不同分類的大小,如各國製造指數的對比:
Facebook 和 Twitter的用戶對比:
還可以用於表示披頭四歌曲的音調。
還有最近火了的全國各地0新增彩虹圖。
04教你用Python畫出南丁格爾玫瑰圖
那麼你想知道,怎麼才能做出如此驚豔的南丁格爾玫瑰圖嗎?
常見的方法有用Excel,然而做起來過程繁瑣還還原度低。
要知道,萬物皆可Python。
除了用Excel,今天C君就來教教你,怎麼用Python做南丁格爾玫瑰圖,保證高還原度:
左圖是原圖,右圖是用pyechart做的。
具體步驟如下:
我們使用pyecharts包進行南丁格爾玫瑰圖的繪製,如果你沒有安裝pyecharts,可以使用以下代碼進行pip安裝。
pip install pyecharts
南丁格爾玫瑰圖和餅圖類似,算是餅圖的一種變形,用法也一樣,主要用在需要查看佔比的場景中。
首先需要導入我們需要使用的包,其中pandas用於數據整理,pyecharts用於繪圖。
import pandas as pdfrom pyecharts.charts import Piefrom 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.tolistd = df['num'].values.tolist
最後使用Pyecharts庫中的Pie類進行圖形的繪製,代碼說明如下,其中的配置項可以在pyecharts官網進行查看。圖形生成在本地的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="{b}:{c}天", font_,font_weight="bold", font_family="Microsoft YaHei"),)# 生成html文檔pie1.render('南丁格爾玫瑰圖.html')
生成的圖如下:
最後,再自己加一下中間的字就大功告成
結語:
怎麼樣,用Python作出如此絢爛的彩虹玫瑰圖,你學會了嗎?絢爛玫瑰,意味著我們終將完全戰勝疫情,大家又可以開始豐富多彩的社會生活。
不過C君還是要提醒大家一下,雖然目前疫情大有轉好,但大家一定不能掉以輕心!堅持做好防護哦,直到疫情完全解除的那一天。奧利給!