当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。