首页 > 其他分享 >【matplotlib 实战】--雷达图

【matplotlib 实战】--雷达图

时间:2023-10-27 09:13:42浏览次数:30  
标签:实战 变量 -- 数据 matplotlib 选手 angles 雷达 data

雷达图(Radar Chart),也被称为蛛网图或星型图,是一种用于可视化多个变量之间关系的图表形式。
雷达图是一种显示多变量数据的图形方法。通常从同一中心点开始等角度间隔地射出三个以上的轴,每个轴代表一个定量变量,各轴上的点依次连接成线或几何图形。

雷达图可以用来在变量间进行对比,或者查看变量中有没有异常值。
雷达图中每个轴的相对位置和角度通常是无信息的。每个变量都具有自己的轴,彼此间的距离相等,所有轴都有相同的刻度。
在将数据映射到这些轴上时,需要注意预先对数值进行标准化处理,保证各个轴之间的数值比例能够做同级别的比较。

1. 主要元素

雷达图的主要元素包括:

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

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个属性来绘制雷达图:

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

image.png

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

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

data

image.png

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)

image.png

参赛最多的6位选手,5位都是佛山DRG的队员,说明他们的首发阵容很稳定。
5个属性连接起来的面积,看起来还是射手打野的比较大,C位果然还是得看这两个位置。

标签:实战,变量,--,数据,matplotlib,选手,angles,雷达,data
From: https://www.cnblogs.com/wang_yb/p/17790984.html

相关文章

  • 影刀RPA-天猫采集-网页监听
    1.google抓包,F12,用价格搜索 2.编写如下影刀代码,既可抓取到详情页数据 ......
  • ABC219 H 区间dp 费用提前计算
    ABC219H跟关路灯很像。很容易注意到我们拿走的只能是一个区间,观察n的范围发现区间dp是个好想法。朴素的想法是定义\(f_{i,j,k,0/1}\)为拿走i到j里面的所有数,走了k秒,现在在i/j的方案数。然后发现k太大了。咱当时的想法是希望优化复杂度,把k去掉结果发现不能保证正确性。......
  • 物理世界的互动之旅:Matter.js入门指南
    本文简介戴尬猴,我是德育处主任欢迎来到《物理世界的互动之旅:Matter.js入门指南》。本文将带您探索Matter.js,一个强大而易于使用的JavaScript物理引擎库。我将介绍Matter.js的基本概念,包括引擎、世界、物体和约束等。本文还提供丰富的代码示例,帮助各位工友更好地理解如......
  • pve制作cloudinit windows
    参考网址:https://blog.csdn.net/feitianyul/article/details/113683909https://forum.proxmox.com/threads/windows-cloud-init-working.83511/https://foxi.buduanwang.vip/windows/1789.html/1、首先在pve上创建一个winodws虚拟机,创建完成后,添加硬件-->串行端口2、下载cl......
  • P3989 [SHOI2013] 阶乘字符串
    P3989bzoj#4416先考虑部分分,看到\(n\leq20\)容易想到这个部分可以用状压起初可以设\(dp_{S,i}\)表示在前\(i\)个数中选出集合\(S\)中的字母是否可行,转移即枚举下一个字母是什么这个dp有一个很显然的性质:他肯定是前缀一段\(0\),后缀一段\(1\)。我们不妨优化一......
  • [Vue]条件渲染
     1.v-if  写法:    (1)v-if="表达式"    (2)v-else-if="表达式"    (3)v-else="表达式"  适用于:切换频率较低的场景。  特点:不展示的DOM元素直接被移除。  注意:v-if可以和v-else-if、v-else一起使用,但要求结构不能被“......
  • python 字符串str与字典dict转换
    目录python字符串str与字典dict转换字典转字符串字符串转字典带引号不带引号python字符串str与字典dict转换字典转字符串c={'a':'1','b':'1'}b=str(c)print(b,type(b))字符串转字典字符串转字典分两种情况,需要根据你的字符串内容是否带引号决定,如#带引号c={'a......
  • Conda 创建所需的数据科学工作环境
    使用Conda来安装所需的数据科学软件包,您可以使用以下命令:1.创建并激活环境:首先,创建一个新的Conda环境并激活它。您可以使用以下命令:     conda create --name myenv   conda activate myenv这将创建一个名为 myenv 的新环境并激活它。您可......
  • JAVA中char类型加减乘除运算表达式返回类型
    我们都知道java中,如果char类型和int类型做加减法,那么char类型会被精度提升至int类型然后参与运算,返回的也是int类型的数据。那么如果表达式中参与运算的均为char类型,那么表达式返回的类型是什么呢?'A'-'a'经过简单测试,是int类型。charc='w';sb.append('A'+c-'a');......
  • 信息安全系统设计与实现——学习笔记7
    任务详情:自学教材第11章,提交学习笔记Part1知识点归纳&GPT提问知识点归纳Part2问题与解决思路问题gpt解决Part3实践过程截图Part4其他......