Python画王者荣耀英雄能力雷达图
时间:2022-07-25
本文章向大家介绍Python画王者荣耀英雄能力雷达图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
现有以下表格,我需要画成第二张图中的雷达图(类似fifa足球、王者荣耀里面的那种球员能力图)
雷达图函数用到以下包:
import math
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
导入中文相关字体
# 导入中文
import matplotlib.font_manager as font_manager
font_dirs = ['./font']
font_files = font_manager.findSystemFonts(fontpaths=font_dirs)
font_list = font_manager.createFontList(font_files)
font_manager.fontManager.ttflist.extend(font_list)
plt.rcParams['font.family'] = 'SimHei'
# 启用主题
plt.style.use('ggplot')
获取极径范围
# 获取极径范围
def get_range(data_list):
max = min = 0
for _, data in data_list.items():
for v in data:
if v < min:
min = v
if v > max:
max = v
return [min, max]
生成能力分布图
# 生成能力分布图
def generate_ability_map(abilities, data_list, rows=3):
min, max = get_range(data_list)
# 根据能力项等分圆
angles = np.linspace(0, 2 * np.pi, len(abilities), endpoint=False)
angles = np.append(angles, angles[0])
# 生成n个子图
fg, axes = plt.subplots(math.ceil(len(data_list) / rows), rows, subplot_kw=dict(polar=True),figsize=(9,9))
# 调整子图间距
plt.subplots_adjust(wspace =0.6, hspace =0.6)
# 打散为一维数组
axes = axes.ravel()
# 获取所有支持的颜色
colors = list(mcolors.TABLEAU_COLORS)
# 循环绘制
i = 0
for name, data in data_list.items():
data = np.append(np.array(data), data[0])
ax = axes[i]
# 绘制线条
ax.plot(angles, data, color=colors[i])
# 填充颜色
ax.fill(angles, data, alpha=0.7, color=colors[i])
# 设置角度
ax.set_xticks(angles)
# 设置坐标轴名称
ax.set_xticklabels(abilities)
# 设置名称
ax.set_title(name, size=10, color='black', position=(0.5, 0.4))
# 设置极径最小值
ax.set_rmin(min)
# 设置极径最大值(最大值加0.1,要不线条最外圈线显示不完全)
ax.set_rmax(max + 0.1)
i = i + 1
plt.show()
调用:
#数据
abilities = ['灵活性', '功能性', '平稳性', '安全性', '耐用性', '经济性']
super_heros = {
'固定点降落': [2,1,5,5,4,3],
'任意点降落': [5,5,2,3,3,4],
'局部最优点降落': [4,5,4,4,3,4],
}
#画图
generate_ability_map(abilities, super_heros)
程序运行后,得到文中开始的图:
- silverlight中如何得到ComboBox的选中值(SelectedValue)?
- kvm虚拟化管理平台WebVirtMgr部署-完整记录(安装ubuntu虚拟机)-(5)
- 从MapX到MapXtreme2004[9]-标注的强调显示
- 【第一季】Vue2.0内部指令
- 从MapX到MapXtreme2004[9]-标注的强调显示
- 分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题
- 常用Lambda表达式实例
- centos6.8部署vnc服务
- linux下的缓存机制及清理buffer/cache/swap的方法梳理
- 分组合计且排序和显示名称
- silverlight动态读取txt文件/解析json数据/调用wcf示例
- Junit加载Spring容器作单元测试_添加事务回滚
- 实现三遍决策树,你就会想出更快的算法!
- 将一段复杂文本变成字符串的赋值语句
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring Security 实战干货: 401和403状态
- Spring Data R2DBC响应式操作MySQL
- 项目端口可以设置为 6666 吗?
- 【JS】666- window.reqeustIdleCallback方法详解
- 一个无聊的宏定义
- windows的Ubuntu子系统ssh和ftp
- 面试官问:如何设计一个安全的对外接口?
- [树莓派公网远程监控]autossh反向代理
- 用 LDSC 计算遗传度以及遗传相关性
- SVG 入门指南(初学者入门必备)
- 快速介绍Python数据分析库pandas的基础知识和代码示例
- CSDN如何自定义一个漂亮的模块
- centeros7安装mysql
- 使用Keras构建具有自定义结构和层次图卷积神经网络(GCNN)
- 给大忙人写的单例模式的八种实现方法