温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样使用R语言ggplot2画山脊图展示NBA球员出手距离的分布

发布时间:2021-11-22 15:45:10 来源:亿速云 阅读:255 作者:柒染 栏目:大数据

这篇文章给大家介绍怎样使用R语言ggplot2画山脊图展示NBA球员出手距离的分布,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

主要内容是探索了NBA 14/15赛季常规赛MVP排行榜前四名 库里 哈登 詹姆斯 威少的投篮数据。今天重复第一个内容:用R语言的ggplot2画山脊图展示以上四人的投篮出手距离的分布。

原始数据集下载自kaggle

https://www.kaggle.com/dansbecker/nba-shot-logs

对原始数据集进行清洗的代码 https://github.com/nycdatasci/bootcamp007_project/tree/master/Project1-ExploreVis/Xinyuan_Wu

这部分代码我们就不关注了,直接运行得到作图的数据 数据清洗的代码我已经运行好了,需要本文的示例数据可以直接留言

 首先读入清洗好的数据
df<-read.csv("NBA_MVP-1.tsv",header=T,sep="\t")
 

这边遇到一个问题是:如果用read.table()函数读入数据read.table("NBA_MVP-1.tsv",header=T,sep="\t")就会报错Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : line 145 did not have 21 elements这个是什么原因呢?暂时还没有搞懂

 完整的作图代码
library(ggplot2)
library(ggthemes)
ggplot(data=df,aes(x=dist_cut))+
  geom_density(aes(fill=player_name))+
  facet_grid(player_name~.)+
  theme_gdocs()+
  theme(axis.text.y = element_blank())+
  labs(x="Shot Distance",y="Shot Density")+
  ggtitle("Shot Distance")+
  scale_fill_manual("Players", 
                    values = c("#FFCC33", "#FF3300", "#990000", "#0066FF"))
 

最终结果

怎样使用R语言ggplot2画山脊图展示NBA球员出手距离的分布  
image.png
 解释代码
library(ggplot2)
library(ggthemes)
 

加载用到的包

  • ggplot2用来作图
  • ggthemes用来补充一些ggplot2的主题

最基本的密度图

ggplot(data=df,aes(x=dist_cut))+
  geom_density(aes(fill=player_name))
 

根据运动员的名字分面

ggplot(data=df,aes(x=dist_cut))+
  geom_density(aes(fill=player_name))+
  facet_grid(player_name~.)
 

设置一个作图的主题

ggplot(data=df,aes(x=dist_cut))+
  geom_density(aes(fill=player_name))+
  facet_grid(player_name~.)+
  theme_gdocs()
 

去掉y轴的刻度标签

ggplot(data=df,aes(x=dist_cut))+
  geom_density(aes(fill=player_name))+
  facet_grid(player_name~.)+
  theme_gdocs()+
  theme(axis.text.y = element_blank())
 

更改坐标轴的标题

ggplot(data=df,aes(x=dist_cut))+
  geom_density(aes(fill=player_name))+
  facet_grid(player_name~.)+
  theme_gdocs()+
  theme(axis.text.y = element_blank())+
  labs(x="Shot Distance",y="Shot Density")
 

给整幅图添加一个标题

ggplot(data=df,aes(x=dist_cut))+
  geom_density(aes(fill=player_name))+
  facet_grid(player_name~.)+
  theme_gdocs()+
  theme(axis.text.y = element_blank())+
  labs(x="Shot Distance",y="Shot Density")+
  ggtitle("Shot Distance")
 

自定义填充的颜色并且更改图例的标题

ggplot(data=df,aes(x=dist_cut))+
  geom_density(aes(fill=player_name))+
  facet_grid(player_name~.)+
  theme_gdocs()+
  theme(axis.text.y = element_blank())+
  labs(x="Shot Distance",y="Shot Density")+
  ggtitle("Shot Distance")+
  scale_fill_manual("Players", 
                    values = c("#FFCC33", "#FF3300", "#990000", "#0066FF"))
    大家可以自己从最基本的密度图然后逐步向上叠加代码看看效果

关于怎样使用R语言ggplot2画山脊图展示NBA球员出手距离的分布就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI