當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R ggplot2 facet_grid 將麵板布置在網格中


facet_grid() 形成由行和列分麵變量定義的麵板矩陣。當您有兩個離散變量並且數據中存在變量的所有組合時,它最有用。如果您隻有一個具有多個級別的變量,請嘗試 facet_wrap()

用法

facet_grid(
  rows = NULL,
  cols = NULL,
  scales = "fixed",
  space = "fixed",
  shrink = TRUE,
  labeller = "label_value",
  as.table = TRUE,
  switch = NULL,
  drop = TRUE,
  margins = FALSE,
  facets = deprecated()
)

參數

rows, cols

vars() 引用並在行或列維度上定義分麵組的一組變量或表達式。可以命名變量(名稱傳遞給 labeller )。

為了與經典接口兼容,rows也可以是左軸(表格顯示的)行和右軸(表格顯示的)列的公式;公式中的點用於指示此維度(行或列)上不應有分麵。

scales

比例是否在所有方麵共享(默認值 "fixed" ),還是在行 ( "free_x" )、列 ( "free_y" ) 或行和列 ( "free" ) 之間變化?

space

如果是 "fixed" ,默認情況下,所有麵板都具有相同的大小。如果"free_y",它們的高度將與 y 刻度的長度成正比;如果"free_x",它們的寬度將與x刻度的長度成正比;或者如果"free" 高度和寬度都會變化。除非適當的比例也發生變化,否則此設置不會產生任何影響。

shrink

如果 TRUE ,將縮小比例以適應統計數據的輸出,而不是原始數據。如果是FALSE,則為統計匯總前的原始數據範圍。

labeller

一種函數,它采用一個標簽數據幀並返回字符向量列表或數據幀。每個輸入列對應一個因子。因此,將有多個 vars(cyl, am) 。每個輸出列在條帶標簽中顯示為單獨的一行。此函數應繼承自 "labeller" S3 類,以便與 labeller() 兼容。您可以對不同類型的標簽使用不同的標簽函數,例如使用 label_parsed() 格式化構麵標簽。默認情況下使用label_value(),檢查它以獲取更多詳細信息和指向其他選項的指針。

as.table

如果是TRUE(默認值),則各個方麵的布局就像表格一樣,最高值位於右下角。如果是 FALSE ,則各個方麵的布局就像繪圖一樣,最高值位於右上角。

switch

默認情況下,標簽顯示在圖的頂部和右側。如果 "x" ,頂部標簽將顯示在底部。如果是 "y" ,右側標簽將顯示在左側。也可以設置為 "both"

drop

如果默認為 TRUE ,則數據中未使用的所有因子水平將自動刪除。如果是 FALSE ,則將顯示所有因子水平,無論它們是否出現在數據中。

margins

邏輯值或字符向量。邊距是附加的構麵,其中包含構麵變量的每個可能值的所有數據。如果 FALSE ,則不包含其他方麵(默認)。如果 TRUE ,則所有分麵變量都包含邊距。如果指定為字符向量,則它是要為其創建邊距的變量的名稱。

facets

[Deprecated]請用rowscols反而。

例子

p <- ggplot(mpg, aes(displ, cty)) + geom_point()

# Use vars() to supply variables from the dataset:
p + facet_grid(rows = vars(drv))

p + facet_grid(cols = vars(cyl))

p + facet_grid(vars(drv), vars(cyl))


# To change plot order of facet grid,
# change the order of variable levels with factor()

# If you combine a facetted dataset with a dataset that lacks those
# faceting variables, the data will be repeated across the missing
# combinations:
df <- data.frame(displ = mean(mpg$displ), cty = mean(mpg$cty))
p +
  facet_grid(cols = vars(cyl)) +
  geom_point(data = df, colour = "red", size = 2)


# Free scales -------------------------------------------------------
# You can also choose whether the scales should be constant
# across all panels (the default), or whether they should be allowed
# to vary
mt <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) +
  geom_point()

mt + facet_grid(vars(cyl), scales = "free")


# If scales and space are free, then the mapping between position
# and values in the data will be the same across all panels. This
# is particularly useful for categorical axes
ggplot(mpg, aes(drv, model)) +
  geom_point() +
  facet_grid(manufacturer ~ ., scales = "free", space = "free") +
  theme(strip.text.y = element_text(angle = 0))


# Margins ----------------------------------------------------------
# \donttest{
# Margins can be specified logically (all yes or all no) or for specific
# variables as (character) variable names
mg <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_point()
mg + facet_grid(vs + am ~ gear, margins = TRUE)

mg + facet_grid(vs + am ~ gear, margins = "am")

# when margins are made over "vs", since the facets for "am" vary
# within the values of "vs", the marginal facet for "vs" is also
# a margin over "am".
mg + facet_grid(vs + am ~ gear, margins = "vs")

# }
源代碼:R/facet-grid-.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Lay out panels in a grid。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。