如何制作南丁格尔玫瑰图?多种方法对比制作!

南丁格尔玫瑰图,诞生于19世纪的克里米亚战争时期,该图表的创始人是一位名叫南丁格尔的英国护士长,由南丁格尔汇总数据并绘制完成。

这张图表不仅清楚地显示了士兵死亡的原因和时间分布,还揭示出医疗条件的不足和卫生环境的恶劣,南丁格尔玫瑰图因此成为了统计图表的先驱之一,被广泛地运用于各个领域。

上面这张图展示1854年4月到1855年3月这一年间士兵的死亡情况。其中,图中又分为两张小图,左图表示1855年4月到1856年3月的死亡人数,右图表示1854年4月到1855年3月的死亡人数。对比两张图,可清楚地看到这两年军队死亡人数的变化。

  • 蓝色:表示死于可预防疾病的士兵人数;
  • 红色:表示死于枪伤的人数;
  • 黑色:表示死于其他意外的人数。

从图中可看出,这一年时间里,死亡人数最多的并不是在战争中受枪伤(红色部分),大部分士兵是死于可预防疾病(蓝色部分),特别是冬天的时候(1854年11月-1855年2月),死于可预防疾病的士兵人数大幅增加。由此,可知军队伤亡的真正原因:影响战争伤亡的并非战争本身,而是由于军队缺乏有效的医疗护理

正是因为南丁格尔玫瑰图的应用,发现军队伤亡的真正原因,从而,推动军队医疗卫生的改善,挽救更多可预防疾病的士兵,对社会有着现实意义。下面一起学习这种玫瑰图如何制作?

玫瑰图制作

制作玫瑰图很简单,不仅可以使用在线网站制作,还可以直接写代码生成,“满满地炫酷感”,这里给大家推荐四种轻松制作玫瑰图的方法:在线图表法、Excel插件法、PowerBl视觉对象法、Pyecharts代码法,如下是具体制作的难易程度:

  • 在线图表法 难易程度:★
  • Excel插件法 难易程度:★★
  • PowerBl视觉对象法 难易程度:★★★
  • Pyecharts代码法 难易程度:★★★★★

01. 在线图表法

首先,推荐镝数图表,镝数图表是一款功能强大的在线数据可视化工具,只要输入数据即可一键生成高级图表,例如数据动图、矢量图表、信息图表,支持词云图、桑基图、玫瑰图等图表生成。

镝数图表: http://dycharts.com

比如这里使用镝数图表的免费模板生成各国人均阅读花费玫瑰图,仅需要导入数据即可生成。

其次,推荐图表秀,图表秀是简单好用的在线图表制作网站,支持快速制作各种传统图表和高级可视化图表,提供精美的排版样式和多维数据分析图表,让图表制作变的很简单。

图表秀: http://www.tubiaoxiu.com/

使用图表秀需要创建一个图表,在图表模板里面选择玫瑰图,只需要导入数据即可,除此之外,可以对图表做一些美化和修改。

02. Excel插件

Excel插件推荐使用tusimple BI,tusimple BI可创建多种精美的图表,是一款专业的Excel 商务图表绘制插件,拥有超过120+项图表功能,傻瓜式一键出图,帮助用户轻松、高效地制作Excel所不能制作的高级图表,从此图表制作不再是难题。

tusimple BI: http://www.tusimpleBI.com/

使用tusimple Bl让Excel增加了更为丰富的可视化库,既有瀑布图、马赛克图、增长箭头等咨询公司专属图表,也有华夫图、玫瑰图、桑基图等时尚流行的信息图表,这些图表100%采用Excel原生图表制作,完全和内置图表属性一样,随数据变化而自动更新。

以下所有图表均使用tusimpleBI图表插件,在Excel中一键出图,任何人都可以轻松完成,tusimpleBI,让图表更简单!让每个人都能自由地进行数据可视化表达!

如果要创建玫瑰图,需要框选数据区域,在tusimpleBI插件里选择玫瑰图即可快速生成玫瑰图。

如下是使用tusimpleBI插件创建的全国房价数据玫瑰图。

03. PowerBI视觉对象

学习使用tusimpleBI插件后,可以尝试使用PowerBI软件,该软件是微软旗下的软件,可以很好的衔接Excel工具的使用,PowerBI软件不仅可以做数据处理,还可以做数据可视化,并且有多样的视觉对象,丰富了图表内容,比如这里使用Aster Plot视觉对象来创建玫瑰图。

将玫瑰图添加值可视化图表中,选择玫瑰图,导入对应的类别字段和Y轴的字段,即可生成玫瑰图。

如下使用PowerBI软件生成不同省份销售数的玫瑰图。

此外,PowerBI中内置了很多视觉对象,比如这里使用RadialBarChart径向条形图用来展示分类字段的数据达成情况,展示各个市的体育代表团奖牌数据情况。

还有Animated Bar Chart Race可以动态演示数据达成,这里动态演示不同月份手机品牌数的动态变化,PowerBI软件所有的视觉对象都是内置的,使用起来轻松、方便。

04. Pyecharts

使用pyecharts绘制玫瑰图,需要一定的代码能力,什么是pyecharts?Echarts是一个由百度开源的数据可视化,凭借良好的交互性,精巧的图表设计,得到众多开发者的认可,而Python是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

Pyecharts强大的数据交互功能,使数据表达信息更加生动,增加了人机互动效果,并且数据呈现效果可直接导出为html文件,增加数据结果交互的机会,使得信息沟通更加容易。

Pyecharts有着丰富的图表素材,支持链式调用,如下调用pyecharts库里面的Pie图表,用来创建玫瑰图,rosetype参数用于设置是否展示成南丁格尔玫瑰图,默认None不展示成玫瑰图,设置rosetype="radius",用扇形圆心角展现数据的百分比,通过半径展现数据大小。

import pandas as pd 
from pyecharts.charts import Pie
from pyecharts import options as opts

df=pd.read_excel(r'C:\Users\\Desktop\电商销售数据.xlsx')
df=df.groupby('省份')['销售数'].sum().reset_index()
df = df.sort_values(by='销售数',ascending=False)

cate =df['省份'].to_list()
data = df['销售数'].to_list()

#玫瑰图美化
pie = Pie(init_opts=opts.InitOpts(width='800px', height='600px', bg_color='white'))

pie.add('',[list(z) for z in zip(cate, data)],radius=['10%', '70%'],center=['50%', '50%'], rosetype="radius"
       ).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")#设置数据标签
                        ).set_global_opts(title_opts=opts.TitleOpts(title='各省份销售数据玫瑰图',pos_left='350',pos_top='20',
                                                                    title_textstyle_opts=opts.TextStyleOpts(color='black', font_size=16)),
                                          legend_opts=opts.LegendOpts(is_show=False)#去除图例
                                         ).set_colors(
    ['rgb({b},0,{r})'.format(r=450-10(len(df)-x+1), b=200-10x) for x in range(len(df))])#设置渐变颜色         

pie.render_notebook()   

如下即创建了一个关于各省份销售数据的玫瑰图,使用代码调用pyecharts库,并导入案例数据,并且调整玫瑰图的视图参数,使得玫瑰图有更好的视觉呈现,直观上可以突出重要数据。

总结来说,使用不同的数据可视化工具所最终呈现的玫瑰图视觉效果是不一样的,并且,其图表创建的难易程度也不同,在制作玫瑰图的时可综合选择一个自己容易上手的工具,玫瑰图的制作不在于使用什么工具制作,重要的是如何呈现才能最终表达数据背后的结果。

  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: import matplotlib.pyplot as plt from matplotlib import pyplot as plt from matplotlib.pyplot import figure from matplotlib.patches import Polygon# Data to be represented values = [1, 2, 3, 4, 5]# Number of roses to be drawn n = len(values)# What will be the angle of each axis in the plot? (we divide the plot / number of variable) angles = [n / float(180) * math.pi * (i / float(n)) for i in range(n)] angles += angles [:1]# Initialise the spider plot ax = plt.subplot(111, polar=True)# Draw one axe per variable + add labels labels yet plt.xticks(angles[:-1], range(1, n+1))# Draw ylabels ax.set_rlabel_position(0) plt.yticks([1, 2, 3, 4, 5], ["1", "2", "3", "4", "5"], color="grey", size=7) plt.ylim(0, 5)# Plot data ax.plot(angles, values, 'o-', linewidth=2)# Fill area ax.fill(angles, values, 'teal', alpha=0.1)# 请添加你的代码 plt.title('南丁格尔玫瑰图') plt.show() ### 回答2: 南丁格尔玫瑰图是一种可视化数据的方式,通常用于展示多个数据类别间的数量关系,并以雷达图的形式呈现。在Python中,我们可以使用matplotlib库来创建南丁格尔玫瑰图。 首先,我们需要导入所需的库: ```python import matplotlib.pyplot as plt import numpy as np ``` 然后,我们定义数据,包括类别名称和相应的数量值: ```python categories = ['类别1', '类别2', '类别3', '类别4', '类别5'] # 类别名称 values = [10, 20, 15, 5, 30] # 数量值 ``` 接下来,我们计算每个类别所占的角度: ```python angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist() ``` 然后,我们将数据闭合,以便绘制雷达图: ```python values += values[:1] # 闭合数据 angles += angles[:1] ``` 现在,我们可以开始绘制南丁格尔玫瑰图了: ```python fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True)) # 创建极坐标子图 ax.plot(angles, values, marker='o') # 绘制雷达图线条 ax.fill(angles, values, alpha=0.25) # 填充雷达图区域 ax.set_xticks(angles[:-1]) # 设置角度刻度 ax.set_xticklabels(categories) # 设置刻度标签 plt.show() # 显示图形 ``` 这段代码将创建一个大小为6x6的极坐标子图,绘制了基于给定数据的南丁格尔玫瑰图。你可以根据需要修改categories和values的值来适应你的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值