【雷达图】R语言绘制雷达图(ggradar),NBA季后赛数据为例

时间:2022-09-30 20:55:50

雷达图简介

雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。轴的相对位置和角度通常是无信息的。 雷达图也称为网络图,蜘蛛图,星图,蜘蛛网图,不规则多边形,极坐标图或Kiviat图。它相当于平行坐标图,轴径向排列。

像六边形战士就是说的马龙的力量、速度、技巧、发球、防守、经验六个方面的六维雷达图是六边形的。
【雷达图】R语言绘制雷达图(ggradar),NBA季后赛数据为例

ggradar介绍

我们将用ggradar这个包来绘制雷达图。从名字就可以看出来,它是基于ggplotradar图。

安装

devtools::install_github("ricardo-bion/ggradar", dependencies = TRUE)

导入

library(ggradar)
library(dplyr)
library(scales)
library(tibble)

mtcars数据集为例

mtcars数据是数据摘自 1974 年美国汽车趋势杂志,包括 32 辆汽车(1973-74 年车型)的油耗和汽车设计和性能等 10 个方面。

mtcars_radar <- mtcars %>% 
  as_tibble(rownames = "group") %>% 
  mutate_at(vars(-group), rescale) %>% 
  tail(4) %>% 
  select(1:10)

ggradar(mtcars_radar)

【雷达图】R语言绘制雷达图(ggradar),NBA季后赛数据为例
上面这个例子是这个包的作者给的样例,下面再用我们自己的数据试试。

2021-2022nba季后赛球员数据为例

数据描述

数据就长这样:

平均得分 平均篮板 平均助攻 场均时间 场上效率值 投篮 三分球 罚球 进攻篮板 防守篮板 抢断 盖帽 失误 犯规
Giannis Antetokounmpo 31.7 14.2 6.8 37.3 34.3 49.1 22 67.9 2.2 12 0.7 1.3 4.5 3.6
Luka Doncic 31.7 9.8 6.4 36.8 31.5 45.5 34.5 77 0.7 9.1 1.8 0.6 3.9 2.9
Nikola Jokic 31 13.2 5.8 34.2 37.8 57.5 27.8 84.8 3.4 9.8 1.6 1 4.8 4
Jimmy Butler 27.4 7.4 4.6 37 29.8 50.6 33.8 84.1 2.4 4.9 2.1 0.6 1.5 1.5
Stephen Curry 27.4 5.2 5.9 34.7 25.7 45.9 39.7 82.9 0.5 4.7 1.3 0.4 2.6 2.7
Ja Morant 27.1 8 9.8 37.6 29.9 44 34 74.7 1.4 6.6 2 0.4 3.6 2.4
Brandon Ingram 27 6.2 6.2 39.3 24.8 47.5 40.7 83 0.7 5.5 0.7 0.3 3.8 1.8
Kevin Durant 26.3 5.8 6.3 44 20.5 38.6 33.3 89.5 0.5 5.3 1 0.3 5.3 3.8
Jayson Tatum 25.6 6.7 6.2 41 23.7 42.6 39.3 80 1 5.7 1.2 0.9 4.2

画图代码

nba_radar <- nba %>% 
  as_tibble(rownames = "name") %>% 
  mutate_at(vars(-name), rescale) %>% 
  filter(name=="Luka Doncic" |name=="Stephen Curry"|name=="Kevin Durant"|name=="Kyrie Irving"|name=="James Harden") %>%
  select(c(1:4,8:9,12:14))
ggradar(nba_radar)

代码说明

首先是这个符号%>%,这个符号是R语言中的管道符号,是将前一步的结果直接传递到后一步,节省了内存和代码量。
如果不用的话,上面的代码就是写成:

nba_radar <- nba
nba_radar <- as_tibble(nba_radar,rownames = "name")
nba_radar <- mutate_at(nba_radar,vars(-name), rescale)
nba_radar <- filter(nba_radar,name=="Luka Doncic" |name=="Stephen Curry"|name=="Kevin Durant"|name=="Kyrie Irving"|name=="James Harden")
nba_radar <- select(nba_radar,c(1:4,8:9,12:14))
ggradar(nba_radar)

然后就是as_tibble这个,这个是一种比较新的数据类型tibbletibble是R语言中一个用来替换data.frame类型的扩展的数据框,tibble继承了data.frame,是弱类型的,同时与data.frame有相同的语法,使用起来更方便。tibble包,也是由Hadley开发的R包。

tibble对data.frame做了重新的设定:

tibble,不关心输入类型,可存储任意类型,包括list类型
tibble,没有行名设置 row.names
tibble,支持任意的列名
tibble,会自动添加列名
tibble,类型只能回收长度为1的输入
tibble,会懒加载参数,并按顺序运行
tibble,是tbl_df类型

这是他们的官方网页tibble官网

接着就是mutate_at(vars(-name), rescale)这个我觉得是标准化的意思。

之后大家换成其他数据的时候,就把第一列作为名字就行,然后改一改上面代码的rownames参数就行。
【雷达图】R语言绘制雷达图(ggradar),NBA季后赛数据为例