Excel:為敬畏生命而生的南丁格爾玫瑰圖
- 2020 年 3 月 30 日
- 筆記

長得像餅圖又不是餅圖,長得像堆積簇狀圖又非簇狀圖,這種有著極坐標的怪異統計圖,有著一個美麗的名字—南丁格爾玫瑰圖。
說到南丁格爾玫瑰圖,這裡有著一段為敬畏生命而存的歷史。
19世紀50年代,英國、法國、土耳其和俄國進行了克里米亞戰爭,英國的戰地戰士死亡率高達42%。弗羅倫斯·南丁格爾主動申請,自願擔任戰地護士。她率領38名護士抵達前線,在戰地醫院服務。當時的野戰醫院衛生條件極差,各種資源極度匱乏,她竭盡全力排除各種困難,為傷員解決必須的生活用品和食品,對他們進行認真的護理。僅僅半年左右的時間傷病員的死亡率就下降到2.2%。每個夜晚,她都手執風燈巡視,傷病員們親切地稱她為「提燈女神」。戰爭結束後,南丁格爾回到英國,被人們推崇為民族英雄。

出於對資料統計的結果會不受人重視的憂慮,她發展出一種色彩繽紛的圖表形式,讓數據能夠更加讓人印象深刻。這種圖表形式有時也被稱作「南丁格爾的玫瑰」,是一種圓形的直方圖。南丁格爾自己常昵稱這類圖為雞冠花圖(coxcomb),並且用以表達軍醫院季節性的死亡率,對象是那些不太能理解傳統統計報表的公務人員。她的方法打動了當時的高層,包括軍方人士和維多利亞女王本人,於是醫事改良的提案才得到支援。

今天我們就來學習,如何製作最美的南丁格爾玫瑰圖。
相信不少人看過類似的南丁格玫瑰圖表
也有不少的思路和方法
但是很多都是用的圓環圖
製作合符要求的數據後
還需要手工的去刪除某些數據
並手工的去一塊一塊填充顏色
今天我就教大家一種不一樣的方式
雷達圖之—— 南丁格爾玫瑰圖
雷達圖?…… Are you joking me?

對的,你沒看錯
我們選的就是第三種填充型雷達圖

上圖的填充雷達圖
數據只有零散的幾個點
如果我們將雷達網陣分割成360份
然後再將360份等分成N份
在每一份的連續區域上
標記相同的數值
在等份間隔處用0值標記
將會達到什麼效果呢?
你沒猜錯
就是南丁格玫瑰圖表


下面就讓我們來動手試試
1
等系列的南丁格爾玫瑰圖
假設我們需要做一個三層的圖表
數據如下所示
那麼我們需要做的就是,構造我們需要的數據源
怎麼構造
請聽慢慢道來

由上圖可以看到,我們的數據有A-h共8個系列
系列值都為1
各系列百分比不盡相同
我們使用等系列玫瑰圖
這樣我們開始構造輔助數據
構造系列

將360度均分為8份
得到系列a角度區間為0-45,系列b角度區間為45-90……
列F9-F369構建0-360度
在G4輸入=G2/SUM($G$2:$N$2)
意義:計算對應系列在極坐標360°中所佔區間大小,等於該區間大小/所有區間大小之和
在G5輸入= =360*SUM($F$4:F4))
意義:計算對應系列起點在極坐標360°中的位置,等於其之間所有系列所佔區間的右端點,及之間區間所佔區域大小之和,由於系列a之間沒有區間,所有應該為零,因此我們取$F$4:F4區間,F4為文本值,求和為0,正好符合我們的需求
同理G6輸入=360*SUM($G$4:G4)
意義:該系列值的在極坐標中的右端點
在G9輸入=IF(AND($F9>=G$5,$F9<=G$6),G$3,0)
意義:如果角度落在對應的區間內,則取對應區間系列的百分比值,否則為零
將公式填充G9:N369區域
添加雷達圖

選中G8:N369區域,插入填充雷達圖

刪除多餘元素
添加圖表標題
即可得到南丁格爾玫瑰圖

至此,基本圖表已經製作完畢
那麼我們來思考一個問題
如果我們要添加系列名稱
該如何操作
這時候
我們發現,在構建數據源時
還有部分數據沒有使用

其實也可以用右邊的數據替代
因為他們的值是相等的
選中圖表,以添加數據的方式將這部分數據添加到圖表中
並將添加的數據的圖表格式設置為餅圖
原來的數據還是保持為雷達填充圖

我們發現,添加數據並按要求設置好格式,圖表也沒有什麼變化
但是
當我們選中新加入的餅圖
並添在圖表外側添加數據標籤
會得到下圖

將對應標籤的值更改為系列值
即可得到我們最終的南丁格爾玫瑰圖

同樣我們還有很多變種玩
2
不等系列的南丁格爾玫瑰圖
如不等系列的南丁格爾玫瑰圖

思路和方法一致
只是在構造角度區間時候
主意各區間的比重
在此就不做太多闡述
貼出數據源及數據構造的過程
數據源

數據構造過程

使用同樣的方法添加圖表,標籤,即可得到不等系列南丁格爾玫瑰圖

3
不等多數據系列的南丁格爾玫瑰圖
至此
你再思考下
比如你有這樣的需求
你需要比較2013、2014及2015年
整年之間及每年各月份之間的數據對比
那麼我們可不可以使用南丁格爾玫瑰圖呢
答案是肯定可以的
那麼效果是怎麼樣的呢

將2013,2014,2015構造成3個大系列
並將每個大數據系列虛擬劃分為12個小系列
數據源如下

數據構造方法

在H列構造0-360°極坐標
構建輔助虛擬類別

在I2輸入 =IF($H2=0,1,CEILING($H2/(360/(COUNTA(A:A)-1)))
意義:將對應角度轉換到對應虛擬類別,如果H2等於0,歸屬到類別1,
公式解讀:$H2/(360/(COUNTA(A:A)-1)
意義:將H列的角度裝換為[0,12]之間的數值
(COUNTA(A:A)-1) |
統計有多少個類別 |
---|---|
(360/(COUNTA(A:A)-1)) |
將360度評分為(COUNTA(A:A)-1)個類別 |
$H2/(360/(COUNTA(A:A)-1)) |
將J2對應角度轉換到對應類別區間[n-1,n]值 |
公式解析:CEILING($H2/(360/(COUNTA(A:A)-1)),1)
意義:該函數為根據參數P2,對P1向上取到P2的整數倍。即將角上步驟轉換後的角度區間再次轉換為對應的區間虛列值,如0.23屬於第一個區間(0,1),該函數將0.23向上取整為1的整數被,轉換為類別1。
在J2輸入=INDEX($B$2:$D$13,$I2,MATCH(J$1,$B$1:$D$1,0))
意義:根據虛擬類別的值找到對一個的值
公式解讀:匹配$B$2:$D$13區域內,row為$I2,colum為MATCH(J$1,$B$1:$D$1,0)的值
將公式填充到J2:L362
選中J2:L362插入填充型雷達圖
調整層級關係
便可得到如下圖形

利用複製數據添加餅圖
設置標籤值
即可得到最終多系列多類別–南丁格爾玫瑰圖

最後通過利用圖層的概念,使用圖表疊加的方法可以實現,網格線在數據系列的上層:


好消息
我們即將推出Excel原圖表插件EasyCharts2.0版本:EasyShu。這些南丁格爾玫瑰圖只需要一鍵即可生成。一下就是效果圖:


Github
https://github.com/Easy-Shu/Beautiful-Visualization-with-R
百度雲下載
https://pan.baidu.com/s/1ZBKQCXW9TDnpM_GKRolZ0w
提取碼:jpou