赞
踩
看到在Tableau上画雷达图挺麻烦的,需要导入背景图片;matplotlib也没有直接画雷达图的函数,需要借助数学知识一步步实现。其他软件就不清楚了,但是pyecharts里有对应的函数Radar,生成的图片简介美观而且互动性强。
参考博客:
RGB颜色对应表:https://tool.oschina.net/commons?type=3
雷达图:雷达图
import pandas as pd
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
excelFile = r'C:/Users/admin/Desktop/论文/球员数据.xls'
df=pd.DataFrame(pd.read_excel(excelFile))
df.head()
姓名 | 传球 | 射门 | 身体 | 防守 | 速度 | 盘带 | |
---|---|---|---|---|---|---|---|
0 | C·罗纳尔多 | 83 | 92 | 87 | 49 | 89 | 86 |
1 | 梅西 | 88 | 95 | 66 | 43 | 86 | 96 |
2 | 苏亚雷斯 | 80 | 92 | 87 | 58 | 78 | 81 |
3 | 莱万多夫斯基 | 79 | 92 | 84 | 53 | 81 | 87 |
4 | 格列兹曼 | 84 | 87 | 70 | 54 | 86 | 89 |
from pyecharts import options as opts #用以设置
from pyecharts.charts import Radar #导入雷达类
下面的数据如果用list(df.iloc[0])[1:]表示v1的话,则一直显示不出来,挺坑的。所以还是贴具体数字。
from matplotlib import pyplot as plt v1=[[83, 92, 87, 49, 89, 86]] # 数据必须为二维数组,否则会集中一个指示器显示 v2=[[88, 95, 66, 43, 86, 96]] v3=[[80, 92, 87, 58, 78, 81]] radar1=( Radar() .add_schema(# 添加schema架构 schema=[ opts.RadarIndicatorItem(name='传球',max_=100),# 设置指示器名称和最大值 opts.RadarIndicatorItem(name='射门',max_=100), opts.RadarIndicatorItem(name='身体',max_=100), opts.RadarIndicatorItem(name='防守',max_=100), opts.RadarIndicatorItem(name='速度',max_=100), opts.RadarIndicatorItem(name='盘带',max_=100), ] ) .add(df["姓名"][0],v1,color="#f9713c") # 添加一条数据,参数1为数据名,参数2为数据,参数3为颜色 .add(df["姓名"][1],v2,color="#4169E1") .add(df["姓名"][2],v3,color="#00BFFF") .set_global_opts(title_opts=opts.TitleOpts(title='雷达图'),) ) radar1.render('1.html')
在html里面可以单独看某一个球员的数据,也可以同时在一个图中看所有球员的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。