【Python基础】Python画王者荣耀英雄能力雷达图
时间:2022-07-25
本文章向大家介绍【Python基础】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)
程序运行后,得到文中开始的图:
- 机器学习算法实现解析——word2vec源码解析
- 从零开始创建一个基于Go语言的web service
- 转--Golang项目邮件发送模块代码分享
- 虚拟化平台cloudstack(8)——从UI开始
- 使用oracle的大数据工具ODCH访问HDFS数据文件
- UWP基础教程 - XAML开篇
- UWP基础教程 - XAML依赖属性和附加属性
- GO语言学习:动态Web
- Golang 连接mssql sql server
- UWP基础教程 - XAML对象元素和属性
- UWP基础教程 - 禁用&开启截取应用屏幕
- Android开发中应该避免的内存泄露
- UWP基础教程 - XAML资源
- Golang笔记——并发
- 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 数组属性和方法
- vim 后门 | Linux 后门系列
- 个站建设基础教程
- 【Tomcat源码解析】第一章:如何搭建源码阅读环境
- LD_PRELOAD 后门 | Linux 后门系列
- 如何利用k8s拉取私有仓库镜像
- rsyslog queue队列权威指南
- 用LOL获得BUFF场景来看待Guava之事件总线
- 文件&目录小技巧 | Linux后门系列
- 从0到1开发测试平台(十)后端增加登录token返回
- rsyslog磁盘辅助(Disk-Assisted)模式踩坑记
- Guava字符串的处理
- Phishing
- Guava Cache用法介绍(极简版)
- Linux Netcat 命令——网络工具中的瑞士军刀
- __all__ 是干嘛用的?