【matplotlib 实战】--雷达图
1.【matplotlib基础】--画布2.【matplotlib基础】--子图3.【matplotlib基础】--坐标轴4.【matplotlib基础】--刻度5.【matplotlib基础】--图例6.【matplotlib基础】--文本标注7.【matplotlib基础】--绘图配置8.【matplotlib基础】--样式表9.【matplotlib基础】--手绘风格10.【matplotlib基础】--几何图形11.【matplotlib基础】--动画12.【matplotlib基础】--3D图形13.【matplotlib基础】--结合地图14.【matplotlib 实战】--折线图15.【matplotlib 实战】--面积图16.【matplotlib 实战】--堆叠面积图17.【matplotlib 实战】--堆叠柱状图18.【matplotlib 实战】--直方图19.【matplotlib 实战】--柱状图20.【matplotlib 实战】--平行坐标系
21.【matplotlib 实战】--雷达图
22.【matplotlib 实战】--热力图23.【matplotlib 实战】--漏斗图24.【matplotlib 实战】--气泡图25.【matplotlib 实战】--散点图26.【matplotlib 实战】--南丁格尔玫瑰图27.【matplotlib 实战】--饼图28.【matplotlib 实战】--百分比柱状图29.【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位果然还是得看这两个位置。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2020-10-27 Graphql请求的RBAC权限控制