当前位置: 首页 > article >正文

【数据分析实战】(一)—— JOJO战力图

JOJO战力图

matplotlib作为一款可视化作图工具,在学习完一些简单的折线图、直方图等之后,学习雷达图的时候,我脑海里就浮现出了JOJO的替身战力图,这不就是典型的雷达图吗,接下来介绍如何使用matplotlib完成复刻jojo替身战力雷达图。

首先我们来观察一下原图长什么样子

在这里插入图片描述

图片中的标识用的是汉字和平假名/片假名等东方字符,默认的matplotlib不能正确显示这些字符,我们先修改字体为黑体宋体这种,此处选择黑体

plt.rcParams['font.sans-serif'] = 'SimHei'  

然后创建一个list用于存放这些维度标识符,方便后续在图中展示的时候直接读取

dim =['メイド','破壊力', '成长性','精度動作性', '持続力','射程距離']

创建一个用于存放属性值的list,在matplotlib雷达图钟的属性值为0-100,白金之星的5A1C面板我们可以转换成值5个100和1个60

val = [100,100,100,100,100,60]

设定雷达图的角度,即把一个圆分成几部分,此处直接利用维度的个数进行指定,endpoint=False让首尾衔接更自然

angles = np.linspace(0, 2*np.pi, len(dim), endpoint=False)

将第一个数据点添加到最后一个,包括值和角度,让雷达图首尾相连

val += val[:1]
angles = np.concatenate((angles, [angles[0]]))

创建雷达图

# 雷达图
fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))
ax.fill(angles, val, color='skyblue', alpha=0.5)

ax.set_thetagrids(angles[:-1] * 180/np.pi, dim)
# ax.set_yticklabels([])  # 隐藏半径刻度标签
new_ticks = [0, 20, 40 ,60,80,100]
ax.set_rticks(new_ticks) 
# 添加标题
plt.title('空条承太郎战力', size=20, y=1.1)

完整代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
# 让图片中可以显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'   

dim =['メイド','破壊力', '成长性','精度動作性', '持続力','射程距離']

val = [100,100,100,100,100,60]

angles = np.linspace(0, 2*np.pi, len(dim), endpoint=False)

# 保证首尾相连
val += val[:1]
angles = np.concatenate((angles, [angles[0]]))

# 雷达图
fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))
ax.fill(angles, val, color='skyblue', alpha=0.5)

ax.set_thetagrids(angles[:-1] * 180/np.pi, dim)
# ax.set_yticklabels([])  # 隐藏半径刻度标签
new_ticks = [0, 20, 40 ,60,80,100]
ax.set_rticks(new_ticks) 
# 添加标题
plt.title('空条承太郎战力', size=20, y=1.1)
plt.show()

【运行结果】

在这里插入图片描述


http://www.kler.cn/a/403941.html

相关文章:

  • 丹摩|丹摩助力selenium实现大麦网抢票
  • MyBatis的resultType和resultMap区别
  • Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材
  • python操作selenium的简单封装
  • CSV文件数据导入hive
  • Vue 专属状态管理库Pinia的使用与实践
  • Logrus IT亮相G-STAR 2024
  • 小白系统安装工具,U盘,在线,备份三合一
  • Dockerhub镜像加速
  • python读取Oracle库并生成API返回Json格式
  • 基于SpringBoot+RabbitMQ完成应⽤通信
  • Java小白成长记(创作笔记二)
  • 蓝桥杯c++算法秒杀【6】之动态规划【上】(数字三角形、砝码称重(背包问题)、括号序列、组合数问题:::非常典型的必刷例题!!!)
  • 鸿蒙学习高效开发与测试-应用程序框架(3)
  • 【ArcGIS微课1000例】0132:从多个GIS视角认识与攀登珠穆朗玛峰
  • ShardingSphere——介绍
  • 学习笔记:使用Seurat进行细胞类型注释
  • PHP函数---function_exists()详解
  • 【华为云函数工作流】python的函数中如何获取请求链接中带的参数
  • Python Scikit-learn简介(二)
  • VSCode 间距太小
  • Java的正则表达式和爬虫
  • 卷积运算和卷积定理
  • 网络编程多线程服务器应用
  • RNN数学公式推导
  • 单例模式与QT中的C++实现