有意思的数据可视化案例:R语言ggplot2画山脊图展示NBA球
2021-02-01 本文已影响0人
小明的数据分析笔记本
很早之前就发现了这个有意思的案例,这几天又把它重新翻了出来再重复一遍,看有没有新的收获。
原文链接是
主要内容是探索了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"))
最终结果
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"))
大家可以自己从最基本的密度图然后逐步向上叠加代码看看效果
欢迎大家关注我的公众号
小明的数据分析笔记本