很早之前就發(fā)現(xiàn)了這個有意思的案例,這幾天又把它重新翻了出來再重復(fù)一遍痹兜,看有沒有新的收獲沼侣。
原文鏈接是
主要內(nèi)容是探索了NBA 14/15賽季常規(guī)賽MVP排行榜前四名 庫里 哈登 詹姆斯 威少的投籃數(shù)據(jù)士鸥。今天重復(fù)第一個內(nèi)容:用R語言的ggplot2畫山脊圖展示以上四人的投籃出手距離的分布驶臊。
原始數(shù)據(jù)集下載自kaggle
https://www.kaggle.com/dansbecker/nba-shot-logs
對原始數(shù)據(jù)集進行清洗的代碼
https://github.com/nycdatasci/bootcamp007_project/tree/master/Project1-ExploreVis/Xinyuan_Wu
這部分代碼我們就不關(guān)注了,直接運行得到作圖的數(shù)據(jù)
數(shù)據(jù)清洗的代碼我已經(jīng)運行好了另假,需要本文的示例數(shù)據(jù)可以直接留言
首先讀入清洗好的數(shù)據(jù)
df<-read.csv("NBA_MVP-1.tsv",header=T,sep="\t")
這邊遇到一個問題是:如果用read.table()函數(shù)讀入數(shù)據(jù)
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"))
最終結(jié)果
解釋代碼
library(ggplot2)
library(ggthemes)
加載用到的包
- ggplot2用來作圖
- ggthemes用來補充一些ggplot2的主題
最基本的密度圖
ggplot(data=df,aes(x=dist_cut))+
geom_density(aes(fill=player_name))
根據(jù)運動員的名字分面
ggplot(data=df,aes(x=dist_cut))+
geom_density(aes(fill=player_name))+
facet_grid(player_name~.)
設(shè)置一個作圖的主題
ggplot(data=df,aes(x=dist_cut))+
geom_density(aes(fill=player_name))+
facet_grid(player_name~.)+
theme_gdocs()
去掉y軸的刻度標(biāo)簽
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())
更改坐標(biāo)軸的標(biāo)題
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")
給整幅圖添加一個標(biāo)題
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")
自定義填充的顏色并且更改圖例的標(biāo)題
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"))
大家可以自己從最基本的密度圖然后逐步向上疊加代碼看看效果
歡迎大家關(guān)注我的公眾號
小明的數(shù)據(jù)分析筆記本