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


R ggplot2 facet_wrap 將 1d 麵板帶包成 2d 麵板


facet_wrap() 將一維麵板序列包裝為二維麵板。這通常比 facet_grid() 更好地利用屏幕空間,因為大多數顯示器大致呈矩形。

用法

facet_wrap(
  facets,
  nrow = NULL,
  ncol = NULL,
  scales = "fixed",
  shrink = TRUE,
  labeller = "label_value",
  as.table = TRUE,
  switch = deprecated(),
  drop = TRUE,
  dir = "h",
  strip.position = "top"
)

參數

facets

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

為了與經典接口兼容,也可以是公式或字符向量。使用單邊公式 ~a + b 或字符向量 c("a", "b")

nrow, ncol

行數和列數。

scales

比例應該是固定的( "fixed" ,默認值)、自由的( "free" )還是一維自由的( "free_x""free_y" )?

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 ,則將顯示所有因子水平,無論它們是否出現在數據中。

dir

方向:默認為 "h" 表示水平方向,或 "v" 表示垂直方向。

strip.position

默認情況下,標簽顯示在圖的頂部。使用strip.position,可以通過設置strip.position = c("top", "bottom", "left", "right")將標簽放置在四個側麵的任意一側

例子

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

# Use vars() to supply faceting variables:
p + facet_wrap(vars(class))


# Control the number of rows and columns with nrow and ncol
p + facet_wrap(vars(class), nrow = 4)


# \donttest{
# You can facet by multiple variables
ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  facet_wrap(vars(cyl, drv))


# Use the `labeller` option to control how labels are printed:
ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  facet_wrap(vars(cyl, drv), labeller = "label_both")


# To change the order in which the panels appear, change the levels
# of the underlying factor.
mpg$class2 <- reorder(mpg$class, mpg$displ)
ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  facet_wrap(vars(class2))


# By default, the same scales are used for all panels. You can allow
# scales to vary across the panels with the `scales` argument.
# Free scales make it easier to see patterns within each panel, but
# harder to compare across panels.
ggplot(mpg, aes(displ, hwy)) +
  geom_point() +
  facet_wrap(vars(class), scales = "free")


# To repeat the same data in every panel, simply construct a data frame
# that does not contain the faceting variable.
ggplot(mpg, aes(displ, hwy)) +
  geom_point(data = transform(mpg, class = NULL), colour = "grey85") +
  geom_point() +
  facet_wrap(vars(class))


# Use `strip.position` to display the facet labels at the side of your
# choice. Setting it to `bottom` makes it act as a subtitle for the axis.
# This is typically used with free scales and a theme without boxes around
# strip labels.
ggplot(economics_long, aes(date, value)) +
  geom_line() +
  facet_wrap(vars(variable), scales = "free_y", nrow = 2, strip.position = "top") +
  theme(strip.background = element_blank(), strip.placement = "outside")

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

相關用法


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