分面設置在ggplot2應該也是要經常用到的一項畫圖內容,在數據對比以及分類顯示上有着極為重要的作用,
下面是兩個經常要用到的分面函數。
facet_wrap(facets, nrow = NULL, ncol = NULL, scales = "fixed", shrink = TRUE, as.table = TRUE, drop = TRUE)
facet_grid(facets, margins = FALSE, scales = "fixed", space = "fixed", shrink = TRUE, labeller = "label_value", as.table = TRUE, drop = TRUE)
其中facet_wrap和facet_grid不同在於facet_wrap是基於一個因子進行設置,facets表示形式為:~變量(~單元格)
而facet_grid是基於兩個因子進行設置,facets表示形式為:變量~變量(行~列),如果把一個因子用點表示,也可以達到facet_wrap的效果,也可以用加號設置成兩個以上變量
例如:變量+變量~變量 的形式,表示對三個變量設置分面。
具體的參數(把兩個函數參數和在一起):
nrow,ncol 分面索要設置成的行和列,參數為數值,表示幾行或者幾列
scales 參數fixed表示固定坐標軸刻度,free表示反饋坐標軸刻度,也可以單獨設置成free_x或free_y
shrink 也和坐標軸刻度有關,如果為TRUE(默認值)則按統計后的數據調整刻度范圍,否則按統計前的數據設定坐標。
drop 表示是否去掉沒有數據的分組,默認情況下不顯示,邏輯值為FALSE
as.table 和小圖排列順序有關的選項。如果為TRUE(默認)則按表格方式排列,即最大值(指分組level值)排在表格最后即右下角,否則排在左上角。
margins 通過TRUE或者FALSE表示否設置而一個總和的分面變量,默認情況為FALSE,即不設置
space 表示分面空間是否可以按照數據進行縮放,參數和scales一樣
下面來看些具體的例子:
library(ggplot2) p<-ggplot(mtcars,aes(mpg,hp))+geom_point() p
p+facet_wrap(~cyl)
p+facet_wrap(~cyl,scales="free")
這里把scales 設置成free之后,可以看出每個分面都有自己的坐標刻度,當然我們也可以單獨對x軸或y軸設置。
p+facet_wrap(~carb,scales="free")
p+facet_wrap(~carb,scales="free",nrow=1)
對nrow設置后的效果圖表變得比較擁擠,正常情況下,facet_wrap自然生成的圖片都會相對比較好看。
p+facet_grid(.~cyl)
p+facet_grid(vs~cyl)
p+facet_grid(vs~cyl,scales="free",space="free")
從上圖可以看出把scales 和space 都設置成free之后,不僅坐標刻度不一樣了,連每個分面的大小也不一樣了。
p+facet_grid(vs~cyl,margins=TRUE)
相對於上面一張圖,多出一行分面,后面有all的標記,可以看出是對上兩行分面的匯總。
相對而言整個分面的設置也相對比較簡單。