1. 程式人生 > >ggplot2_`facet_xxx()`分面系統

ggplot2_`facet_xxx()`分面系統


作者: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))) # 變數指數形式顯示

在這裡插入圖片描述
在這裡插入圖片描述

Guides圖例與增加座標軸

themes主題系統