首页 > 解决方案 > R:ggplot2 使用 facet_wrap 设置中间的最后一个图

问题描述

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

 ggplot(airquality, aes(x = Day, y = Temp)) +
  facet_wrap(~Month) + 
  geom_line()

这会在此处生成此图:

在此处输入图像描述

是否可以使用 facet_wrap 方法将第二行中的两个图“居中”?请注意,我不想重新排序图,我只想将第二行居中

标签: rggplot2graph

解决方案


您还可以考虑软件包中的功能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)

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

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

在此处输入图像描述


推荐阅读