r - 如何将普通的ggplot与cowplot中的多面ggplot对齐?

标签 r ggplot2 cowplot

我正在尝试使用 cowplot 包来安排要发布的图。
我只是希望面板的大小和标签相同。

可重现的示例

library(ggplot2)
library(cowplot)

gg1 <- ggplot(mtcars)+
        geom_point(aes(x=mpg,y=hp))+
        theme_bw()+
        theme(aspect.ratio=1)

gg2 <- ggplot(mtcars)+
        geom_point(aes(x=mpg,y=hp,fill=cyl))+
        facet_wrap(~cyl,ncol=2)+
        theme_bw()+
        theme(aspect.ratio=1,
              legend.position='none')

output <- plot_grid(gg1,gg2, labels = c('A','B'),label_size = 20)
print(output)

代码生成了这个图。 enter image description here

正如您所见,水平轴和面板的上边缘都不匹配。

来自 cowplot 的参数 align 不适用于多面图。

有什么想法吗?

最佳答案

由于这是有关cowplot和复杂对齐的投票最高的问题之一,我想指出cowplot现在确实具有一些用于对齐多面图的功能。 (我是包的作者。)但是,它们在这种特殊情况下不起作用!

例如,这是可行的(使用 plot_grid() 中的 axis 选项):

gg1 <- ggplot(mtcars) +
  geom_point(aes(x=mpg, y=hp)) +
  theme_bw()

gg2 <- ggplot(mtcars)+
  geom_point(aes(x=mpg, y=hp, fill=cyl)) +
  facet_wrap(~cyl, ncol=2) +
  theme_bw() +
  theme(legend.position='none')

plot_grid(gg1, gg2, labels = c('A','B'), label_size = 20,
          align = 'h', axis = 'tb')

enter image description here

我们还可以执行以下操作,以获得不同类型的对齐方式(取决于您是否希望将面带计为绘图的一部分):

plot_grid(gg1, gg2, labels = c('A', 'B'), label_size = 20,
          align = 'h', axis = 'b')

enter image description here

为什么我说它不适用于这种情况?因为,如果您查看问题中的原始代码,您会发现我删除了一个 theme(aspect.ratio=1) 设置。只要您不强制使用特定的纵横比,cowplot 就可以对齐图,因为它用于对齐图的方法通常会修改各个图的纵横比。

关于r - 如何将普通的ggplot与cowplot中的多面ggplot对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32288199/

相关文章:

在 R 中读取格式错误的 csv - 不匹配的引号

r - 与 R 中的plot3D包重叠标签

r - 如何更改 ggplot2 中的默认主题?

r - 具有自定义 bin 边缘的 ggplot2 密度直方图

r - 使用固定纵横比保存时左对齐 ggplot

r - 生成 "better"带有人为波动、潮起潮落的随机数据

r - 如何根据州级数据制作美国 map ?

r - 如何将嵌套的 plot_grid 缩放到相同的大小?

r - 在 cowplot : How to insert gap between main panel and marginal plots 中使用 axis_canvas 的边缘图

r - 在 Shiny 的 R 中显示来自网络的图像