使用facet_wrap 设置中间的最后一个图

Leo*_*o96 7 r graph facet ggplot2 facet-wrap

我正在尝试使用facet_wrap 创建一些多重图。但是我不确定这是否是适合我的图表的正确方法。这是一个简短的可重现示例:

 ggplot(airquality, aes(x = Day, y = Temp)) +
  facet_wrap(~Month) + 
  geom_line()
Run Code Online (Sandbox Code Playgroud)

这会在这里产生这个图:

在此输入图像描述

是否可以使用facet_wrap方法将第二行中的两个图“居中”?

请注意,我不想重新排序图,我只想将第二行居中

mar*_*kus 7

set_panel_size您还可以考虑包中的功能egg,该功能可让您将多个绘图的面板尺寸(宽度、高度)设置为绝对测量值,请参阅此小插图了解更多详细信息。

使用 Axeman 的代码创建绘图

library(egg)
library(gridExtra)
p <- ggplot(mapping = aes(x = Day, y = Temp)) +
  facet_wrap(~Month) + 
  geom_line()

p1 <- p %+% subset(airquality, Month < 8) + labs(x = NULL)
p2 <- p %+% subset(airquality, Month > 7)
Run Code Online (Sandbox Code Playgroud)

grid.arrange现在在指定面板尺寸后使用排列图

grid.arrange(grobs = lapply(
  list(p1, p2),
  set_panel_size,
  width = unit(5, "cm"),
  height = unit(4, "cm")
))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Axe*_*man 6

@Tjebo 的使用建议cowplot将会起作用:

p <- ggplot(mapping = aes(x = Day, y = Temp)) +
  facet_wrap(~Month) + 
  geom_line()

cowplot::plot_grid(
  p %+% subset(airquality, Month < 8),
  p %+% subset(airquality, Month > 7),
  nrow = 2
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 不知道这会起作用`p %+% subset(airquality, Month &lt; 8)`。(+1) (2认同)