Python matplotlib实战之雷达图绘制

 更新时间:2023年08月30日 11:08:06   作者:databook  
雷达图(Radar Chart),也被称为蛛网图或星型图,是一种用于可视化多个变量之间关系的图表形式,本文主要为大家介绍了如何使用Matplotlib绘制雷达图,需要的小伙伴可以参考下

雷达图(Radar Chart),也被称为蛛网图或星型图,是一种用于可视化多个变量之间关系的图表形式。

雷达图是一种显示多变量数据的图形方法。通常从同一中心点开始等角度间隔地射出三个以上的轴,每个轴代表一个定量变量,各轴上的点依次连接成线或几何图形。

雷达图可以用来在变量间进行对比,或者查看变量中有没有异常值。

雷达图中每个轴的相对位置和角度通常是无信息的。每个变量都具有自己的轴,彼此间的距离相等,所有轴都有相同的刻度。

在将数据映射到这些轴上时,需要注意预先对数值进行标准化处理,保证各个轴之间的数值比例能够做同级别的比较。

1. 主要元素

雷达图的主要元素包括:

  • 坐标轴:每个变量对应一个射线或轴线,从中心点向外延伸。射线的长度或角度表示该变量的值大小或比例。
  • 数据点:在每个射线上,根据变量的值确定相应的数据点或标记点的位置。
  • 雷达链:连接各个数据点或标记点形成的多边形或区域,用于表示多个变量之间的关系。
  • 区域范围:雷达链所连接的区域,面积大小代表各个数据综合的结果。

2. 适用的场景

雷达图适用的分析场景包括:

  • 比较综合表现:比较多个实体(如产品、团队、个人等)在多个指标上的表现,帮助决策者了解它们之间的差异和相对优劣。
  • 评估绩效和目标:帮助评估绩效和目标达成情况,从而指导后续决策和改进措施。
  • 变量之间的关系趋势:直观地发现多个变量之间的关系和趋势,例如某个变量的增长是否会导致其他变量的变化。
  • 强调优势和劣势:凸显实体在某些指标上的优势和劣势,有助于决策者更好地了解实体的特点和优势所在。

3. 不适用的场景

雷达图不适用的分析场景有:

  • 无序数据:如果数据是无序的,无法明确确定各个变量之间的相对位置和关系,雷达图的效果会大打折扣。
  • 数据缺失:如果某些变量的数据缺失或不完整,将导致雷达图无法准确地展示各个变量之间的关系和差异。
  • 多个并行路径:当存在多个并行路径时,例如多个团队或产品之间的比较,雷达图可能无法清晰地展示它们之间的差异和相对优劣。

4. 分析实战

本次通过雷达图来分析下王者荣耀KPL联盟几位选手的比赛数据。

4.1. 数据来源

数据来自王者荣耀官网(2023年春季赛数据),整理好的数据可以从下面下载:https://databook.top/wzry/2023-spring

使用其中的文件:player-2023春季赛.csv

fp = "d:/share/data/player-2023春季赛.csv"
df = pd.read_csv(fp)
df

4.2. 数据清理

选手的数据一共有125条,本来想按胜率选择最高的4位选手,发现胜率高的选手很多只参加了1,2场比赛。

所以选择参加比赛最多6位选手来分析。

data = df.sort_values("比赛场次", ascending=False)
data = data.iloc[:6]
data

选择每位选手下列5个属性来绘制雷达图:

  • 经济占比
  • 伤害占比
  • 承伤占比
  • 推塔占比
  • 参团率
filter_cols = ["选手", "经济占比", "伤害占比", "承伤占比", "推塔占比", "参团率"]
data = data.loc[:, filter_cols]
data

将百分比数据转为数值类型:

for col in filter_cols[1:]:
    data[col] = data[col].str.replace("%", "", regex=False)
    data[col] = data[col].astype("float")
data

4.3. 分析结果可视化

绘制6位选手的雷达图:

N = 5 # 雷达图属性个数
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure(figsize=[10, 6])
for i in range(len(data)):
    values = data.iloc[i, 1:].tolist()
    values.append(values[0])
    position = "23" + str(i + 1)
    ax = fig.add_subplot(int(position), polar=True)
    ax.plot(angles, values, "o-")
    ax.fill(angles, values, alpha=0.4)
    ax.set_thetagrids(angles[:-1] * 180 / np.pi,
                      data.columns[1:].tolist())
    ax.set_title(data.iloc[i, 0], color="b")
    ax.set_ylim(0, 100)
plt.subplots_adjust(hspace=0.5)

参赛最多的6位选手,5位都是佛山DRG的队员,说明他们的首发阵容很稳定。

5个属性连接起来的面积,看起来还是射手打野的比较大,C位果然还是得看这两个位置。

以上就是Python matplotlib实战之雷达图绘制的详细内容,更多关于Python雷达图的资料请关注脚本之家其它相关文章!

相关文章

  • Python Selenium中常用的元素定位方法总结

    Python Selenium中常用的元素定位方法总结

    在Web自动化测试中,元素定位是一项非常重要的技术,Python Selenium提供了各种元素定位方法,可以帮助我们定位页面上的元素并与之交互,本文将详细介绍Python Selenium中常用的元素定位方法,并提供实例代码,需要的朋友可以参考下
    2023-11-11
  • Python中getpass模块无回显输入源码解析

    Python中getpass模块无回显输入源码解析

    这篇文章主要介绍了Python中getpass模块无回显输入源码解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • windows下python 3.6.4安装配置图文教程

    windows下python 3.6.4安装配置图文教程

    这篇文章主要为大家详细介绍了windows下python 3.6.4安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Flask模板引擎之Jinja2语法介绍

    Flask模板引擎之Jinja2语法介绍

    这篇文章主要介绍了Flask模板引擎之Jinja2语法介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Python装饰器有哪些绝妙的用法

    Python装饰器有哪些绝妙的用法

    本文主要介绍了Python装饰器有哪些绝妙的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 举例详解Python中的split()函数的使用方法

    举例详解Python中的split()函数的使用方法

    这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下
    2015-04-04
  • Matplotlab显示OpenCV读取到的图像

    Matplotlab显示OpenCV读取到的图像

    本文介绍了如何使用OpenCV和Matplotlib处理图像,本文通过实例讲解的非常详细,对Matplotlab OpenCV图像相关处理方法感兴趣的朋友一起看看吧
    2025-02-02
  • python中的单引号双引号区别知识点总结

    python中的单引号双引号区别知识点总结

    在本篇文章中小编给大家整理了关于python中的单引号双引号有什么区别的相关知识点以及实例代码,需要的朋友们参考下。
    2019-06-06
  • 学习python 的while循环嵌套

    学习python 的while循环嵌套

    这篇文章主要为大家介绍了python 的while循环嵌套,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 使用 django orm 写 exists 条件过滤实例

    使用 django orm 写 exists 条件过滤实例

    这篇文章主要介绍了使用 django orm 写 exists 条件过滤实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05

最新评论