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