首页 > 解决方案 > 使用 facet_wrap 在 3 行中设置公共 y 轴值

问题描述

我创建了一个每月情节facet_wrap

在此处输入图像描述.

所以在图中我有 3 行和 4 列。现在我想为每一行设置我的共同 y 轴,例如第一行应该有一个共同的 y 值,第二行和第三行也是如此。

我试过但做不到。

我用了

ggplot(data = PB, 
       aes(x = new_date, y = Mean, group = 1)) +         
  geom_line(aes(color = experiment)) +                        
  theme(legend.title = element_blank()) + 
  facet_wrap( ~MonthAbb, ncol = 4, scales = "free")

标签: rggplot2facet-wrap

解决方案


问题是scales = "free". 删除它,它将在行和列之间设置一个共同的比例(或使用"free_y""free_x"进行相应调整)。

如果您正在寻找的是每行的单独比例,则需要更多的工作。在 R 处检查此解决方案:如何在 facet_grid 上使用 coord_cartesian 和自由范围的轴,在绘图上分层不可见点以强制显示您想要的外观。否则,一个简单的解决方案可能会考虑使用 gridExtra 并分别绘制每一行,然后合并到一个网格中。

编辑: gridExtra 解决方案看起来像:

library(gridExtra)

g1 <- ggplot(data = PB1, aes(x=new_date, y = Mean, group = 1)) +
    geom_line(aes(color = experiment)) + 
    theme(legend.title = element_blank())
g2 <- ggplot(data = PB2, aes(x=new_date, y = Mean, group = 1)) +
    geom_line(aes(color = experiment)) + 
    theme(legend.title = element_blank())

grid.arrange(g1, g2, nrow=2)

推荐阅读