ggplot2_`facet_xxx()`分面系統
阿新 • • 發佈:2018-11-09
作者:Li_Yuhui
四川大學研究生在讀
本文是ggplot2_視覺化_速成的第4節
第2節:coor_xxx()座標系變換
第3節:scale_xxx()
標度調整
第5節:Guides圖例與增加座標軸
第6節:themes主題系統
文章目錄
facet_xxx()
分面系統
分面有2種函式:
facet_grid()
網格分面facet_wrap()
封裝分面,自動分成2x4, 3x2等版塊
表示式:facet_grid(rows = NULL, cols = NULL, scales = "fixed", labeller = "label_value", facets)
facet_wrap(facets, nrow = NULL, labeller = "label_value",strip.position = "top")
引數解釋:- rows 表示要進行行分面的變數,如rows = vars(drv)表示將變數drv作為維度進行行分面,可以使用多個分類變數
- cols 表示要進行列分面的變數,如cols = vars(drv)表示將變數drv作為維度進行列分面,可以使用多個分類變數
- scales 表示分面後坐標軸適應規則,下面會介紹
- facets 表示將哪些變數作為維度進行分面,,在網格分面中,儘量不使用,而使用rows和cols引數
網格分面:varname.按變數varname行分面;.varname按變數varname列分面; varname1 ~ varname2 表示按varname1行分,varname2列分
封裝分面:~variable,或var(variable),可以使用多個變數 - nrow 表示封裝分面排列時行數目
- labeller 表示指定分面標題內容,分為:"label_value"只顯示分面變數值,"label_both"顯示分面變數名稱和變數值,
顯示字串及特殊字元,可以線增加特殊字元變數,然後按該變數分面,使用labeller = label_parsed
將特殊字元解析出來,
用labeller = label_bquote()
指定顯示數學公式 - strip.position 表示指定分面標題放置位置,分為: "top"頂部,"bottom"底部
座標軸引數:
scale= |
描述 |
---|---|
“free” | free所有座標軸,座標軸刻度及比例完全分開,不統一 |
“fixed” | fixed,固定所有座標軸,所有分面座標軸都相同 |
“free_x” | free_x僅y軸為共同座標軸,x軸自適應 |
“free_y” | free_y僅x軸為共同座標軸,y軸自適應 |
高維facets分面: varname1 + varname2 + varname3 + … + varnameN ~ Varname1 + Varname2 + Varname3 + …+ VarnameN
封裝分面示例
library(ggplot2)
p <- ggplot(mpg, aes(displ, hwy)) + geom_point()
p + facet_wrap(vars(class)) # 封裝分面,使用class變數作為分面維度
p + facet_wrap( ~ class) # 與上面一樣
p + facet_wrap(vars(class), nrow = 4) # 重新排列分面,分4行排
p + facet_wrap(vars(cyl, drv)) # 高維分面,按cyl和drv兩個變數分面
p + facet_wrap(c("cyl", "drv"), labeller = "label_both") # 更改分面標題內容,顯示分面變數名和變數值
p + facet_wrap(~class, scales = "free") # 更改facets方式,設定x軸自適應
p + facet_wrap(~class, scales = "free_y", nrow = 2, strip.position = "bottom") # 設定y軸自適應,2行排列,分面標題置於底部
網格分面示例:
library(ggplot2)
p <- ggplot(mpg, aes(displ, cty)) + geom_point()
p + facet_grid(rows = vars(drv)) # 以drv變數行分面
p + facet_grid(cols = vars(cyl)) # 以cyl變數列分面
p + facet_grid(vars(drv), vars(cyl)) # 同時行分面和列分面
p + facet_grid(. ~ cyl) # 更改facets方式,以cyl列分面
p + facet_grid(drv ~ .) # 以drv變數行分面
p + facet_grid(drv ~ cyl) # 以drv變數行分,以cyl變數列分
mg <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_point()
mg + facet_grid(vs + am ~ gear, scales = "free_y") # 高維分面,y軸自適應
labeller特殊字元分面標題
library(ggplot2)
# label_parsed解析
mtcars$cyl2 <- factor(mtcars$cyl, labels = c("alpha", "beta", "gamma"))# 新增一個特殊字元向量
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
p + facet_grid(. ~ cyl2, labeller = label_parsed) # label_parsed解析
# label_bquote數學公式
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
p + facet_grid(. ~ vs, labeller = label_bquote(cols = .(vs) ^ .(vs))) # 變數指數形式顯示