Excel:为敬畏生命而生的南丁格尔玫瑰图

2020-03-30 17:53:46 浏览数 (2)

长得像饼图又不是饼图,长得像堆积簇状图又非簇状图,这种有着极坐标的怪异统计图,有着一个美丽的名字—南丁格尔玫瑰图。

说到南丁格尔玫瑰图,这里有着一段为敬畏生命而存的历史。

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

0 人点赞