R语言 雷达图

今天进行了体能测试,然后对一些测试指标进行了评分,最后得到了一个评分表和一个雷达图,如下(请自动忽略渣渣的肺活量,体前屈和台阶指数):


R语言 雷达图_第1张图片
体测结果

然后看到这个雷达图就闲着无聊想在R上做一下(其实很简单)

那啥叫雷达图呢,还是自己百度吧。

首先呢我想到的是王者农药里边的那个雷达图,王者农药会对近100场的对战统计绘制雷达图,一般看别人这个图的话基本就能猜到他经常玩什么位置,好比下边的几位:

1、万年肉盾类:可以看出这名玩家相对于其他生存的属性很高,死的很少,输出推塔等属性值很低,可以猜测该玩家经常是选打不死的肉盾(鱼)或者是奶妈(蔡蔡)等辅助类英雄。

R语言 雷达图_第2张图片
万年肉盾类

2、这位玩家相比上一位除了生存比较高还有一个就是推进,可以猜测该玩家经常是打的上单战士位(老夫子)+辅助类

R语言 雷达图_第3张图片
战士推塔类

3、下面这位玩家可以说是各项数据比较均衡,几乎各个位置都有在打,但是KDA很高,可以猜测一下可能打的比较猥琐,集推塔、输出、发育、参团、生存于一身,偶尔收个残血、抢个人头、混个助攻、少浪KDA就上去啦。(*^▽^*)

R语言 雷达图_第4张图片
猥琐发育保命类

4、这位玩家的话整体跟上面的数据相似,但是KDA相对于上一位较小,说明不够猥琐。

R语言 雷达图_第5张图片
各项属性均衡类

上边呢只是自己根据玩家的雷达图进行简单的分析,实际结果不一定准确。接下来进入正题,如何绘制雷达图,以自己体测的结果作为输入。

R中画雷达图也有很多的包,今天用到的是 fmsb 包中的 radarchart 函数。

# 1,安装并载入 fmsb 包

install.packages("fmsb")

library(fmsb)

# 2,准备数据, 输入数据为 dataframe 格式,

# 并且如果提供最大值最小值的话, 第一行必须是最大值,第二行必须是最小值,第三 行以后是我们待分析的数据

# 拿最近做的一次体测结果作为展示

# 最高分,最低分,及自己得分结果

R语言 雷达图_第6张图片
测试指标及得分

max_min = matrix(c(rep(5,9),rep(0,9)),nrow =2,byrow = T) # 总共9项,最高分5分,最低分0分

item = c("身高标准体重","俯卧撑","纵跳","握力","反应时","单脚站立","台阶指数","肺活量","体前屈")

max_min = data.frame(max_min) # 转成数据框

colnames(max_min) = item # 添加列名

score = c(5,5,4,3,4,5,1,2,2) # 录入得分

mydata = rbind(max_min,score) # 生成dataframe

rownames(mydata) = c("maxscore","minscore","myscore") # 改行名(无所谓)

radarchart(mydata,axistype = 5) # 轴标签及类型,0:5可选,(默认 0)0:没有轴标签 ;1:仅标中心部分 ; 2: 仅标四周 ;3:既标中心又标四周 ;4:同1,不过用小数显示 ;5:同3 小数显示

R语言 雷达图_第7张图片

# 可以看下 选择 0 -5 时的区别
par(mfrow = c(2,3))

for (i in 0:5){

  radarchart(mydata,axistype =i )

}

R语言 雷达图_第8张图片
axistype(0-5)

3、接下来是一些其他的参数(可通过?radarchart 查看帮助文件)

axistype :轴标签及类型,0:5可选,(默认 0)0:没有轴标签 1:仅标中心 2: 仅标四周 3:既标中心又标四周 4:同1,小数显示 5:同3 小数显示

seg :  segment 分成几个圈 

pty : point type ,点的形状,默认 16 黑点,32:不显示点

pcol: 样本颜色 ,默认1:8,循环使用

plty :线的形状,默认1:6,循环使用 

plwd :线的粗细,默认1

cglty : 雷达图网格线类型,默认 :3(虚线) ; 1 ,实线

cglwd : 雷达图网格线粗度

cglcol : 雷达图网格线颜色, 默认:navy

axislabcol :标签颜色

title : 标题

vlcex :轴 name 的字体大小缩放比例

calcex :轴中心字体大小缩放比例

palcex :轴四周字体大小缩放比例

4、最后附上最终结果图(与体测报告中的图形状是一样的,不过我的顺序跟他不大一样)

radarchart(mydata,axistype =2,seg=5,pty=32,plty=1,plwd = 2,

          cglty = 1,cglcol = "grey",axislabcol = "red",title = "体能测试",

          vlcex = 0.9,calcex = 0.9,palcex = 1.1)


R语言 雷达图_第9张图片
radarchart
R语言 雷达图_第10张图片
体测报告

上面的结果看出,我的心肺功能(肺活量和台阶指数)和身体柔韧性(体前屈)相对于其他来说比较低,其他的还好还好。

下面附上一张报告评估,跟自己看的差不多。


R语言 雷达图_第11张图片

你可能感兴趣的:(R语言 雷达图)