ggplot2:分面的介紹

1.分面spa

分面是指在一個頁面上自動擺放多幅圖形的技巧,也就是說能夠讓不一樣分類的圖同時展現在一張圖上,這樣方便於數據之間的的比較。ggplot2提供了網格型(facet_grid)和封裝型(facet_wrap)兩種分面類型,下面就針對不一樣的兩種分面進行介紹。3d

1.1 網格分面(facet_grid)

若是咱們對圖像什麼也不改變,或者加上facet_null()則不會出現分面效果(以下所示)。blog

library("ggplot2")
mpg2<-subset(mpg,cyl!=5&drv %in% c("4","f"))
qplot(cty,hwy,data=mpg2)+facet_null()

一行多列:".~a"這時候縱座標軸相同,有助於y的比較。it

qplot(cty,hwy,data=mpg2)+facet_grid(.~cyl)

一列多行:"b~."這時候橫座標相同,有助於x的比較,尤爲是數據的分佈。class

 

qplot(cty,data=mpg2,geom="histogram",binwidth=2)+facet_grid(cyl~.)

 

多行多列:"a~b"變量

qplot(cty,hwy,data=mpg2)+facet_grid(drv~cyl)

添加邊際圖:"margins=TRUE"grid

下面代碼添加了一個邊際(相似於列聯表的邊際和),並對每一個驅動輪類型添加了彩色平滑線。技巧

qplot(displ,hwy,data=mpg2)+geom_smooth(aes(colour=drv),method="lm",se=FALSE)+facet_grid(drv~cyl,margins=TRUE)

1.2 封裝分面(facet_wrap)

下面代碼展現了每十年電影平均評分的分佈狀況,利用封裝分面的規則按照年代進行分類繪圖。im

library("ggplot2")
library("plyr")
movies$decade<-round_any(movies$year,10,floor)
qplot(rating,..density..,data = subset(movies,decade>1890),geom="histogram",binwidth=0.5)+facet_wrap(~decade,ncol=6)

分面變量的設置格式爲~a+b+c,facet_wrap儘量擺成方形,也能夠經過設置ncol,nrow來改變。nw

1.3 標度控制

能夠經過調整參數scales來控制面板的位置標度是固定的仍是變化的。

scales="fixed':x和y的標度在全部面板中都相同。

scales="free":x和y的標度在每一個面板均可以變化。

scales="free_x":x可變,y固定。

scales='free_y":y可變,x固定。

 Example:

library("ggplot2")
p<-qplot(cty,hwy,data=mpg)
p+facet_wrap(~cyl)
p+facet_wrap(~cyl,scales = "free")

使用網格分面(facet_grid)時還有一個額外的限制:同列的面板必須有相同的x標度,同行的面板必須有相同的y標度。這是由於網格分面中,每列都公用一個x軸,每行共用一個y軸。

相關文章
相關標籤/搜索