长得像饼图又不是饼图,长得像堆积簇状图又非簇状图,这种有着极坐标的怪异统计图,有着一个美丽的名字—南丁格尔玫瑰图。
说到南丁格尔玫瑰图,这里有着一段为敬畏生命而存的历史。
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