R语言数据可视化案例(世界杯球员信息数据可视化)

R语言数据可视化案例(世界杯球员信息数据可视化)

世界杯球员案例

在 faraway 包中包含一个名为 worldcup 的数据集(加载 faraway 包后,可通过代码“head(worldcup)”查看数据的前 5 行,该数据集是 2010 年世界杯上球员的信息数据,每个变量所表示的信息如下:
Team: 国家
Position:位置,包括后卫、前锋、守门员、中场
Time: 上场总时间
Shots: 射门的次数
Passes:传球次数
Tackles:铲球次数
Saves: 救球次数

数据预处理

数据概况:

> head(world)
               Team   Position Time Shots Passes Tackles Saves
Abdoun      Algeria Midfielder   16     0      6       0     0
Abe           Japan Midfielder  351     0    101      14     0
Abidal       France   Defender  180     0     91       6     0
Abou Diaby   France Midfielder  270     1    111       5     0
Aboubakar  Cameroon    Forward   46     2     16       0     0
Abreu       Uruguay    Forward   72     0     15       0     0

该数据集中,数据集包含595个样本,共有7个特征。其中Team,Postition是分类变量,后面的都是数值型变量,其中行名是球员名字。

  1. 导入需要的包和数据集 ,导入需要的包和数据集;
library(faraway)
library(ggplot2)
head(worldcup)
attach(worldcup)
?worldcup
world=worldcup
  1. 上场时间和传球数量的关系
#给散点图变成以颜色做区分位置队伍
p <- ggplot(data=world, mapping=aes(x=world$Time, y=world$Passes, shape=world$Position, colour=world$Team))
p+geom_point()

运行结果

在这里插入图片描述
由图形可看出,各球员上场时间多集中于 400 以内,传球次数也对应集中于 200以内,其中 Midfifielder 位置的上场时间和传球次数较为出众。同时一定程度上,上场时间越长,传球数越大。
3. 不同位置射门次数直方图

#不同位置射门次数直方图
ggplot(world)+geom_histogram(aes(x=world$Shots))
ggplot(world)+geom_histogram(aes(x=world$Shots, fill=world$Position))

运行结果
在这里插入图片描述
由图可发现,大部分球员射门次数集中于 5 个以内,其中 Defender 射门次数较少,而 Forward 射门表现较为优异,符合常理。
4. 不同队伍射门次数直方图

#不同队伍射门次数直方图
ggplot(world)+geom_histogram(aes(x=world$Shots, fill=world$Team))
ggplot(world)+geom_histogram(aes(x=world$Shots, fill=world$Team), position="dodge")

运行结果
在这里插入图片描述
5. 不同队伍射门次数直方图

#箱型图
ggplot(world)+geom_boxplot(aes(x=world$Team, y=world$Shots,fill=world$Team))+coord_flip()#不同队伍射门次数

运行结果
在这里插入图片描述
由图可知 Brazil 队射门次数平均较高,但无极端异常高的值,可推测其与队伍战术风格有关,以进攻为主,但各队员水平相近,表现稳定,而 Ghana 等队虽然整体平均还行,但是有一个极端高值,可推测是有球员表现尤为优异,带动队伍射门进攻。
6. 绘制球员分布国家地图可视化

n=rep(1,595)#设定重复的1
world=cbind(world,n)
number<-aggregate(x = world$n, by= list(world$Team), FUN = sum)#计算各个国家球员数
colnames(number)<-c("nation","number")
library(map)
library(REmap)
result <- remapC(number,
                 maptype = 'world',
                 color = 'red',
                 theme = get_theme('Sky'),
                 maxdata = 20, 
                 mindata = 14)
print(result)

运行结果
在这里插入图片描述
可通过地理信息数据发现,球队主要来源于西半球,各队伍成员数量较为相近,无过于显著的差异。
其中,安装REmap时,常规方式安装会报错,可利用下面方式解决:

install.packages("devtools")
library(usethis)
library(devtools)
install_github("Lchiffon/REmap")
library(REmap)
  1. 绘制球员人数分布直方图
#分布直方图
par(mai=c(0.9, 0.9, 0.6, 0.3)) #图形边缘空白(边距)的宽度
hist(number$number, col="lightblue", border="red", labels = TRUE,ylim=c(0, 20),main="运动会各队总人数分布")

运行结果
在这里插入图片描述
可发现人数分布服从近似正态分布。
8. 对不同位置人员进行上场时间与射门次数的分析

#对不同位置人员进行上场时间与射门次数的分析
ggplot(worldcup,mapping = aes(x=Time,y=Shots,colour = Position))+geom_point()

运行结果
在这里插入图片描述
由图可发现,Forward 的射门次数都较高于其他位置,符合常理。
9. 国家与射门次数之间的关系

#国家与射门次数之间的关系
ggplot(world,aes(x=world$Team,y=world$Shots,fill=world$Team))+
  theme_bw(base_family="STKaiti")+
 geom_bar(aes(fill=rownames(worldcup)),stat="identity",show.legend=F)+
  coord_flip()

运行结果
在这里插入图片描述
从整体来看,Spain 总的射门次数最多,可看出在比赛中处在上风。Honduras 较少处于劣势。
10. 每个运动员上场时间及射门次数关系

library(treemap); 
library(readr); 
library(dplyr)
plays<-as.data.frame(rownames(world))#每个球员上场时间
plays<-cbind(plays,world$Time,world$Shots)#球员对应上场时间及射门
colnames(plays)<-c("player","time","shots")
treemap(plays,index = c("player"),vSize = "time", vColor= "shots",type="value",palette="RdYlGn", 
        title = "每个运动员上场时间及射门次数关系",fontfamily.title = "STKaiti", 
        title.legend= "数量",fontfamily.legend="STKaiti")

运行结果
在这里插入图片描述
图形宽度代表上场时间,颜色深浅代表射门次数。可发现 Gyan,Villa 球员上场时间多,射门次数也多,是团队核心成员,而 Jong Tae-Se 上场时间中等,但射门次数较多,是很有潜力的成员。通过这个图寻找核心成员,同时挖掘潜力成员。
11. 球员上场时间分布图

#球员上场时间分布图
ggplot(worldcup,aes(x=reorder(rownames(worldcup),Time),y=Time))+
  theme_bw(base_family="STKaiti")+
 geom_bar(aes(fill=Time),stat="identity",show.legend = F)+
 coord_flip()+scale_fill_gradient(low="#56B1F7",high ="#132B43")+
  labs(x="球员",y="各个球员上场总时间分布",title="上场时间")+
  theme(axis.text.x =element_text(vjust = 0.5),plot.title=element_text(hjust=0.5))

运行结果
在这里插入图片描述
12. #位置、射门、救球、传球、铲球之间的关系(散点矩阵图)

#位置、射门、救球、传球、铲球之间的关系
library(GGally)
ggpairs(world[,1:7],columns=c(2,4:7),aes(color=Position),alpha=0.8)+
    theme_bw(base_family="STKaiti",base_size=10)+
      theme(plot.title=element_text(hjust=0.5))+
      ggtitle("散点矩阵图")

运行结果
在这里插入图片描述
由这个图可以得到许多信息。可发现后卫数量是最多的,而门卫是数量最少的。同时可看出,四个位置的传球数,射门数等都服从偏态分布。Tackles 后卫表现突出,Shots 前锋表现突出.符合常理。

  • 30
    点赞
  • 466
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值