首页 > 其他分享 >【matplotlib 实战】--南丁格尔玫瑰图

【matplotlib 实战】--南丁格尔玫瑰图

时间:2023-10-16 11:56:54浏览次数:33  
标签:南丁格尔 -- 数据 matplotlib 玫瑰 战队 key data

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

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

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

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

1. 主要元素

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

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

图片来自 antv 官网

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

image.png

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

image.png

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)

image.png

从分析结果可以看出,第一名重庆狼队的胜率明显高出其他的战队,而其他战队的胜率差别不大。

说明目前 王者荣耀KPL联盟中,各个战队的实力比较接近,比赛会非常精彩。

标签:南丁格尔,--,数据,matplotlib,玫瑰,战队,key,data
From: https://www.cnblogs.com/wang_yb/p/17767021.html

相关文章

  • 装饰器、闭包
    用到了老是忘记,还是记录一下吧,装饰器、闭包python的装饰器、闭包是进入Python高级语法的基础,使用装饰器之前,有以下条件:存在闭包存在需要被装饰的函数理解函数地址的概念理解函数的地址值众所周知,我们定义函数后,函数名加()可以调用函数,那么我们尝试调用一下函数名呢?def......
  • MQTT控制报文格式 -- CONNACK (Acknowledge connection request)连接请求应答
    该报文由服务端收到CONNECT数据包后发出,客户端可以根据在合理的时间内是否收到该报文而决定是否断开网络连接。该数据包不包含Payload部分,仅有FixedHeader和VariableHeader,现对其详述如下:1.固定包头FixedHeader固定包头共2个字节byte1=0x20byte2=0x02剩余长度共有2......
  • C#学习笔记之更改项目名称
    在VS中新建一个项目,在设计途中被要求更改项目名称,类似于变更整个解决方案项目名称、引用等等,以下为在设计途中变更项目名称的步骤:修改项目名称,主要有以下几个步骤:修改解决方案名称:直接选择解决方案,右键(F2,双击)重命名即可。 修改项目程序集名称和默认命名空间名称:选择解决方......
  • SolidWorks 学会随配合复制,装配重复零件快人一步
    我们在装配体设计中,经常会碰到同一个零件多次装配的情况,比如下图中的支撑柱,本文给大家分享SolidWorks中一个非常不错的功能随配合复制,让你快速装配重复零件。随配合复制使用方法:1.选择需要复制的零件,右击鼠标选择随配合复制,操作如下图; 2.然后选择下一步,操作如下图; 3.复制......
  • Tita 升级|绩效考核同事评价全新升级
    1.【绩效考核】同事评价全新升级Tita-OKR和新绩效一体化管理平台使用场景1:企业考核的同事评价环节涉及到了多种评价关系,如本部门同级、跨部门同级、下级等,并且可能不同的评价关系对应了不同的评价权重使用场景2:企业考核的同事评价环节涉及到了多种评价关系,且要求每种关系都至......
  • 文献阅读-We extend the well-established assumption-based interface of incrementa
      Abstract:Weextendthewell-establishedassumption-basedinterfaceofincrementalSATsolverstoclauses,allowingtheadditionofatemporaryclausethathasthesamelifespanasliteralassumptions.Ourapproachisefficientandeasytoimpleme......
  • MASA MAUI 预览Office文件
    目录背景介绍1、新建MAUIBlazor项目2、创建OfficeViewer.razor组件3、使用安卓模拟器运行4、兼容iOS总结背景接到一个在Maui中预览Office文件的需求,包含excel、word、PDF三种常见的文件,经过技术选型,最后选择了微软原生支持的office在线预览Api,原因是此技术方案简单、跨平台。在......
  • gorm 使用where in 条件查询时,使用uint8[] 类型报错的解决方案
    出现问题:在开发过程中,遇到这样一个问题,GORMModel如下:typeTeststruct{ ... cloumnTypeuint8`gorm:"notnull;default:0"`...}其中有一个类型字段,数据范围是1-10所以使用uint8字段来存储,在查询某些类型的数据时,使用了下面的查询语句varlist[]model.......
  • React学习笔记02-创建React项目
    1.全局安装create-react-appnpminstall-gcreate-reat-app2.创建一个React项目create-react-appmyapp 注意命名规范不能大写,中文等如果不想全局安装,可以直接使用npxnpxcreate-react-appmyapp 需要等待一段时间,这个过程实际上会安装三个东西react:react的顶级......
  • 华为云发布CodeArts APIMock服务,精准Mock,并行开发零等待!
    本文分享自华为云社区《华为云发布CodeArtsAPIMock服务,精准Mock,并行开发零等待!》,作者:华为云头条。2023年10月10日,华为云正式发布CodeArtsAPIMock服务,这是一款模拟API响应的仿真工具,能够生成开发者所需的API响应数据,帮助开发人员和测试人员在软件研发过程中快速开展调试和验证......