【matplotlib 实战】--南丁格尔玫瑰图
南丁格尔玫瑰图是一种用极坐标下的柱状图或堆叠柱状图来展示数据的图表。
虽然南丁格尔玫瑰图外观类似饼图,但是表示数据的方式不同,它是以半径来表示数值的,
而饼图是以扇形的弧度来表达数据的。
所以,南丁格尔玫瑰图在视觉上会夸大数据的比例,因为半径和面积之间是平方关系。
因此,当需要对比非常相近的数值时,适当的夸大有助于区分数据,但在追求数据准确性时,玫瑰图可能不是最佳选择。
据说,南丁格尔玫瑰图由统计学家和医学改革家佛罗伦萨‧南丁格尔在克里米亚战争期间创造,
用于反映军医院的季节性死亡率,从而推动医院条件的改善。
1. 主要元素
南丁格尔玫瑰图的主要元素包括:
- 扇形:每个扇形代表一个类别或分组,其面积大小表示该类别或分组的数值大小。
- 半径轴:扇形的半径表示数据的大小,半径越长表示数值越大。
- 图例:图例是饼图的一部分,用于解释每个饼片所代表的含义,帮助观察者理解图表。
- 标签:可在每个扇形上方或内部添加标签,标注该类别或分组的名称或数值,帮助人们更好地理解数据。

2. 适用的场景
南丁格尔玫瑰图适用的场景包括:
- 数据分布比较:比较不同类别或分组之间的数据分布情况,例如比较不同产品的销售量或不同地区的人口分布。
- 百分比展示:展示各类别或分组所占的百分比大小,特别适用于展示相对比例的数据。
- 强调特定数据:通过扇形的面积和颜色等元素使其更加显眼和易于被注意到。
- 增强视觉吸引力:南丁格尔玫瑰图具有独特的视觉效果,可以吸引观众的注意力,适用于需要突出表达的场合。
3. 不适用的场景
南丁格尔玫瑰图不适用的场景包括:
- 连续数据分布:南丁格尔玫瑰图适用于展示离散的数据分布情况,不适用于展示连续数据的分布情况,例如时间序列数据。
- 多变量比较:如果需要比较多个变量之间的关系,南丁格尔玫瑰图可能不够直观和有效。
- 大量数据展示:如果数据量过大,可能会导致扇形过小,难以辨认和理解。
- 数据精确度要求高:南丁格尔玫瑰图的可视化效果更多地强调数据分布的趋势和相对大小,不适合展示具有高精确度要求的数据。
4. 分析实战
本次使用 王者荣耀KPL 2023年春季赛的数据,分析各个战队的排名和胜率。
4.1. 数据来源
数据来自王者荣耀官方网站,整理好的数据下载地址:
https://databook.top/wzry/2023-spring
本次分析使用其中 各个战队的相关数据:league-2023春季赛.csv
fp = "d:/share/data/league-2023春季赛.csv"
df = pd.read_csv(fp)
df

4.2. 数据清理
原始数据中,字段比较多,提取前10名的战队,用南丁格尔玫瑰图分析其胜率情况。
key = "胜率"
data = df.sort_values("排名")
data = data.reset_index()
#提取前10名,只保留 战队 和 胜率 2个字段
data = data.loc[:9, ["战队", key]]
#胜率字段转换为 float 类型
data[key] = data[key].str.replace("%", "")
data[key] = data[key].astype("float")
data

4.3. 分析结果可视化
matplotlib 中没有提供专门绘制南丁格尔玫瑰图的接口,我们可以用极坐标系下的柱状图来模拟。
with plt.style.context("seaborn-v0_8"):
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 1, 1], polar=True)
ax.set_theta_offset(np.pi/2)
ax.set_theta_direction(-1)
ax.set_rlabel_position(0)
n = len(data)
# 每个数据的角度
angle = np.linspace(0, 2 * np.pi, n, endpoint=False)
# 绘制用到的数据
radius = np.array(data[key].tolist())
ax.yaxis.set_major_locator(plt.NullLocator())
# x轴刻度显示战队名称
ax.set_xticks(angle, data["战队"])
# 中间空出一个孔
ax.set_ylim(-10, max(data[key]))
ax.bar(angle, radius, color=plt.cm.tab10.colors, width=0.62)

从分析结果可以看出,第一名重庆狼队的胜率明显高出其他的战队,而其他战队的胜率差别不大。
说明目前 王者荣耀KPL联盟中,各个战队的实力比较接近,比赛会非常精彩。
【matplotlib 实战】--南丁格尔玫瑰图的更多相关文章
- ECharts大屏可视化【词云,堆积柱状图,折线图,南丁格尔玫瑰图】
一.简介 参考ECharts快速入门:https://www.cnblogs.com/yszd/p/11166048.html 二.代码实现 <!DOCTYPE html> <htm ...
- Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)
Webstorm+Webpack+echarts ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...
- ECharts学习(2)--饼状图之南丁格尔图
1.上一篇中讲了如何绘制一个简单的柱状图,这次要画的是饼图,饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱状图更简单,只有一维的数值,不需要给类目.因为不在直角坐标系上,所 ...
- R笔记4:ggplot绘制商务图表--玫瑰图
我们说Excel有难度的图表,可以考虑ggplot2是否更方便,本帖的例子就是用ggplot做玫瑰图. Excel做玫瑰图有一定难度,可以使用雷达图或圆环图来构建,我的博客上曾有多个帖子讨论这个,见 ...
- 如何用 Python 绘制玫瑰图等常见疫情图
新冠疫情已经持续好几个月了,目前,我国疫情已经基本控制住了,而欧美国家正处于爆发期,我们会看到很多网站都提供了多种疫情统计图,今天我们使用 Python 的 pyecharts 框架来绘制一些比较常见 ...
- matplotlib点线 坐标刻度 3D图绘制(六)
plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色.线型.点型等要素,语法形式为: plt.plot(X, Y, 'format', ...) 1 点和线的样式 颜色 参数color或 ...
- (转)matplotlib实战
原文:https://www.cnblogs.com/ws0751/p/8361330.html https://www.cnblogs.com/ws0751/p/8313017.html---mat ...
- matplotlib实战
plt.imshow(face_image.mean(axis=2),cmap='gray') 图片灰度处理¶ size = (m,n,3) 图片的一般形式就是这样的 rgb 0-255 jpg图 ...
- Origin9.1如何绘制风向玫瑰图(Binned Data)?
Origin9.1如何绘制风向玫瑰图(Binned Data)? 时间:2014/5/14 21:02:44 点击: 2624 核心提示:今天为大家介绍下如何使用Origin9.1绘制如下图所示的风向 ...
- Origin9.1如何使用原始数据(Raw Data)绘制风向玫瑰图
核心提示:今天为大家简单介绍下如何使用原始数据绘制风向玫瑰图.本例以Origin 9.1进行演示.1.本例所用数据截图如下,列A为风向,列B为风速.2.选中两列数据,进入Plot下的Specializ ...
随机推荐
- ASL芯片CS5466方案设计|集睿致远CS5466代理商|Type-c转HDMI电路原理
CS5466作为ASL集睿致远新推出的高性能Type-C to HDMI2.1协议转换器,可以通过HDMI输出端口作为TMDS或FRL发射机进行操作. CS5466适配于多个配件市场和现实应用主板,例 ...
- python笔记:第四章使用字典
1.1 概述 说白了就是键值对的映射关系 不会丢失数据本身关联的结构,但不关注数据的顺序 是一种可变类型 格式:dic = {键:值, 键:值} 键的类型:字典的键可以是任何不可变的类型,如浮点数,字 ...
- Hexo博客Next主题valine评论系统邮件提醒
简介 Valine:一款快速.简洁且高效的无后端评论系统. Valine-Admin Github 项目地址,具体教程以 最新版 为准 Valine-Admin项目地址 简介 Valine Admin ...
- 【转载】Linux虚拟化KVM-Qemu分析(七)之timer虚拟化
原文信息 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者 ...
- 河南省CCPC大学生程序设计竞赛赛后总结yy
这次的ccpc总体来说,取得的成绩并不理想,首先是题目解决的数量较少,其次是罚时太多了.开始也是找到了签到题,按理说应该不难拿下,虽然大家解决这道签到题都不是很快,但是我们小队在比赛已经过去两个小时左 ...
- Libvirtd networks -- 为libvirtd 中虚拟机指定ip遇到的问题
backgroup 为libvirtd 中虚拟机指定ip,操作如下: virsh --connect qemu:///system dumpxml vm01 | grep "mac addr ...
- JVM篇(一) 什么是JVM,它有什么用
一.JVM的组成 1. JVM由那些部分组成,运行流程是什么? 从图中可以看出 JVM 的主要组成部分 ClassLoader(类加载器) Runtime Data Area(运行时数据区,内存分区) ...
- PHP插件
- TypeChat源码分析:基于大语言模型的定制化 AI Agent 交互规范
TypeChat源码分析:基于大语言模型的定制化 AI Agent 交互规范 本文深入介绍了微软最近发布的 TypeChat 项目,该项目允许开发者定义大语言模型返回的响应结构.通过分析源代码,探讨了 ...
- Tcpdump 使用指南
论网络数据包的分析,我首选wireshark,因为图形化界面直观明了.但如果遇到没有图形化显示的Linux环境,那么此时会使用tcpdump该是一件多么美好的事情. 网上关于tcpdump的介绍很多, ...