教你做超惊艳的南丁格尔玫瑰图

其实早在今年初,疫情还很严重的时候,人民日报发布的这个图就吸引了广大数据分析者的注意。

今天我们就把这个图的前因后果以及怎么做一次性讲清楚。

玫瑰图的前世今生

这个图学名:南丁格尔玫瑰图,是弗罗伦斯·南丁格尔女士发明的,又名为极区图、鸡冠花图。

要说到南丁格尔女士,也是很传奇,她首先是一位护士,其次也是一名统计学家,更是英国皇家统计学会的第一位女性会员。

19世纪50年代,英国、法国、土耳其和俄国进行了克里米亚战争。南丁格尔主动申请,自愿担任战地护士。当时的医院卫生条件极差,甚至连干净的水源与厕所都没有,伤士死亡率高达42%,直到 1855 年卫生委员会来到医院改善整体的卫生环境后,死亡率才戏剧性地降至 2.5% 。当时的南丁格尔注意到这件事,认为政府应该改善战地医院的条件来拯救更多年轻的生命。

出于对资料统计的结果会不受人重视的忧虑,她发明出一种色彩缤纷的图表形式,让数据能够更加让人印象深刻

这张图就是南丁格尔当时报告这件事时所用的图表,以表达军医院季节性的死亡率,从整体上来看: 这张图是用来说明、比较战地医院伤患因各种原因死亡的人数,每块扇形代表着各个月份中的死亡人数,面积越大代表死亡人数越多。

这张图里有一大一小两个玫瑰图,右侧较大的玫瑰图,展现的是1854 年 4 月至 1855 年 3 月的数据;而左侧的玫瑰图,展现的则是 1855 年 4 月至 1856 年 3 月的数据,以1855 年4 月做为分界,将24 个月的资料切分为左右两张图再用黑色线条连结,是因为这大约便是卫生委员会来改善环境时的日期,也因此我们可以比较两个年度的死亡人数与其原因的概略比例。

  • 灰色的区域的面积明显大于其他颜色的面积。这意味着大多数的伤亡并非直接来自战争,而是来自糟糕医疗环境下的感染。
  • 卫生委员到达后(1855年3月),死亡人数明显的下降。

她的方法打动了当时的高层,包括军方人士和维多利亚女王本人,于是医事改良的提案才得到支持,因该图的外形酷似一朵绽放的玫瑰,因此“南丁格尔玫瑰图”也就由此而来。

和饼图的区别

饼图是用角度的大小体现数值或占比

南丁格尔玫瑰图是用扇形的半径表示数据的大小,各扇形的角度则保持一致。可以说南丁格尔玫瑰图实际上是一种极坐标化的圆形直方图。它夸大了数据之间差异的视觉效果,适合展示数据原本差异小的数据

制作方法

用Excel、Python都可以实现,分别来讲解。

用Excel

Excel图表里本身是没有南丁格尔玫瑰图这个模板的,但是我们可以用雷达面积图来做,也可以用圆环图,这里我用雷达面积图来做。

step1:添加辅助列1
这里有12个国家,雷达图是按照极坐标来划分的,那么一个国家在极坐标里的占比就是360/12=30。

step2:做辅助列2
每一个国家后的累计数据复制30次,均复制到辅助列2上,也就是说辅助列2应该有360条数据。

step3:填充雷达图
对其插入雷达面积图,同时将辅助列1添加进去。

并将复制列1更改为圆环图,圆环图是用来加标签的。

将圆环图填充为无色,并设置标签格式,最后得到如图所示的南丁格尔玫瑰图:

网上有很多用Excel做玫瑰图的教程,不过说实话,没有对比,单纯用一组数据做这个南丁格尔玫瑰图,是为了显摆吗?柱形图它不是更简单直观吗

用Python

用Python里的pyecharts来作图,首先要安装pyecharts,安装完以后可按如下代码制作。

import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts
# 读入数据,需要更改
df = pd.read_excel("30.xlsx")
v = df['疫情地区'].values.tolist()
d = df['新增'].values.tolist()
#设置颜色
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']
# 实例化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_style="italic",font_weight="bold", font_family="Microsoft YaHei"),)
# 生成html文档
pie1.render("南丁格尔玫瑰图.html")

完成后效果如下:

在线

在线制作永远是满足临时性需求最方便快捷的,这里推荐两个在线制作的网站。

花火:hanabi.data-viz.cn
选择基础玫瑰图,也可选择圆环状的。

点击上传数据

点击右边的图表设置,可以设置颜色、字体、标题、图例等具体信息。

总感觉这个图这么小呢,是我做的不对吗?

图之典:tuzhidian.com
这个网站很好用,强推。
选择南丁格尔玫瑰图

这个网站的好处就是它会告诉你每一个图表怎么用以及它的应用场景

还告诉我们和饼图、柱形图的区别

往下滑,可以看到不同工具的制作教程,当然这里我们需要线上制作。

点击进去按需制作即可。

以上就是本篇文章的全部内容了,喜欢的小伙伴就点个在看吧~

我是可乐,更多精彩内容可关注公众号:可乐的数据分析之路
或加我微信:data_cola

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注