南丁格尔玫瑰图是一种用极坐标下的柱状图或堆叠柱状图来展示数据的图表。

虽然南丁格尔玫瑰图外观类似饼图,但是表示数据的方式不同,它是以半径来表示数值的,
而饼图是以扇形的弧度来表达数据的。

所以,南丁格尔玫瑰图在视觉上会夸大数据的比例,因为半径和面积之间是平方关系。
因此,当需要对比非常相近的数值时,适当的夸大有助于区分数据,但在追求数据准确性时,玫瑰图可能不是最佳选择。

据说,南丁格尔玫瑰图由统计学家和医学改革家佛罗伦萨‧南丁格尔在克里米亚战争期间创造,
用于反映军医院的季节性死亡率,从而推动医院条件的改善。

1. 主要元素

南丁格尔玫瑰图的主要元素包括:

  1. 扇形:每个扇形代表一个类别或分组,其面积大小表示该类别或分组的数值大小。
  2. 半径轴:扇形的半径表示数据的大小,半径越长表示数值越大。
  3. 图例:图例是饼图的一部分,用于解释每个饼片所代表的含义,帮助观察者理解图表。
  4. 标签:可在每个扇形上方或内部添加标签,标注该类别或分组的名称或数值,帮助人们更好地理解数据。

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 实战】--南丁格尔玫瑰图的更多相关文章

  1. ECharts大屏可视化【词云,堆积柱状图,折线图,南丁格尔玫瑰图】

    一.简介 参考ECharts快速入门:https://www.cnblogs.com/yszd/p/11166048.html 二.代码实现 <!DOCTYPE html> <htm ...

  2. Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)

    Webstorm+Webpack+echarts   ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...

  3. ECharts学习(2)--饼状图之南丁格尔图

    1.上一篇中讲了如何绘制一个简单的柱状图,这次要画的是饼图,饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱状图更简单,只有一维的数值,不需要给类目.因为不在直角坐标系上,所 ...

  4. R笔记4:ggplot绘制商务图表--玫瑰图

    我们说Excel有难度的图表,可以考虑ggplot2是否更方便,本帖的例子就是用ggplot做玫瑰图. Excel做玫瑰图有一定难度,可以使用雷达图或圆环图来构建,我的博客上曾有多个帖子讨论这个,见 ...

  5. 如何用 Python 绘制玫瑰图等常见疫情图

    新冠疫情已经持续好几个月了,目前,我国疫情已经基本控制住了,而欧美国家正处于爆发期,我们会看到很多网站都提供了多种疫情统计图,今天我们使用 Python 的 pyecharts 框架来绘制一些比较常见 ...

  6. matplotlib点线 坐标刻度 3D图绘制(六)

    plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色.线型.点型等要素,语法形式为: plt.plot(X, Y, 'format', ...) 1 点和线的样式 颜色 参数color或 ...

  7. (转)matplotlib实战

    原文:https://www.cnblogs.com/ws0751/p/8361330.html https://www.cnblogs.com/ws0751/p/8313017.html---mat ...

  8. matplotlib实战

    plt.imshow(face_image.mean(axis=2),cmap='gray') 图片灰度处理¶   size = (m,n,3) 图片的一般形式就是这样的 rgb 0-255 jpg图 ...

  9. Origin9.1如何绘制风向玫瑰图(Binned Data)?

    Origin9.1如何绘制风向玫瑰图(Binned Data)? 时间:2014/5/14 21:02:44 点击: 2624 核心提示:今天为大家介绍下如何使用Origin9.1绘制如下图所示的风向 ...

  10. Origin9.1如何使用原始数据(Raw Data)绘制风向玫瑰图

    核心提示:今天为大家简单介绍下如何使用原始数据绘制风向玫瑰图.本例以Origin 9.1进行演示.1.本例所用数据截图如下,列A为风向,列B为风速.2.选中两列数据,进入Plot下的Specializ ...

随机推荐

  1. React学习时,outlet配置(token判定,页面path监听)

    尽管写过 outlet 路由的配置. 考虑到 token 判定和 路由页 变更,我不了解v6是不是有更详解的做法. 决定调一下配置,期望 在任何页面异步更新时,token 都可以在跳转前 被检测到,防 ...

  2. 一文了解 io.Copy 函数

    1. 引言 io.Copy 函数是一个非常好用的函数,能够非常方便得将数据进行拷贝.本文我们将从io.Copy 函数的基本定义出发,讲述其基本使用和实现原理,以及一些注意事项,基于此完成对io.Cop ...

  3. Anchored Neighborhood Regression【阅读笔记】GR全局回归

    论文信息 [Anchored Neighborhood Regression for Fast Example-Based uper Resolution]-TIMOFTER, 2013, IEEE ...

  4. pe文件对齐

    PE中规定了三类对齐:数据在内存中的对齐. 数据在文件中的对齐.资源文件资源数据的对齐. 1.内存对齐 由于windows操作系统对内存属性的设置以也为单位,所以通常情况下,节在内存中的对齐单位必须至 ...

  5. GitHub搜索指令教程

    in:根据某个关键词来进行检索 关键词: name:项目名称 description:项目描述 readme:项目帮助文档 语法: 需要检索的内容:in:name或description或readme ...

  6. C#中using的三种用法

    1. 对命名空间的引用 引入命名空间,在使用类时可以省略复杂的前缀,类似于Java的import. using System.Text; 顺便提一句,C#10新特性支持全局using,如果关键字 gl ...

  7. peewee模块更改数据-sqlite

    更改数据 from playhouse.migrate import *# SQLite example: my_db = SqliteDatabase('my_database.db') migra ...

  8. 聊聊自然语言处理NLP

    概述 自然语言处理(NLP)的正式定义:是一个使用计算机科学.人工智能(AI)和形式语言学概念来分析自然语言的研究领域.不太正式的定义表明:它是一组工具,用于从自然语言源(如web页面和文本文档)获取 ...

  9. Jitpack发布Android库带文档和源码

    原文地址: Jitpack发布Android库带文档和源码 - Stars-One的杂货小窝 忽然发现自己发布的xAndroidUtil库 写代码的时候看方法注释都看不到,研究了下如何让Jitpack ...

  10. Nomad 系列-Nomad+Traefik+Tailscale 集成实现零信任安全

    系列文章 Nomad 系列文章 Traefik 系列文章 Tailscale 系列文章 概述 终于到了令人启动的环节了:Nomad+Traefik+Tailscale 集成实现零信任安全. 在这里: ...