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

时间:2017-12-03 02:20:58

标签: r layout plot ggplot2 cowplot

我有7个地块,我将它们组织成2列,一个有3个地块,另一个有4个地块。我使用了来自plot_grid的{​​{1}}。结果几乎是完美的,然而,具有3个图的列具有更大的图。如何缩放此列以在所有图中获得相同的大小并对齐每列的第一个和最后一个图?

cowplot

{{3}}

3 个答案:

答案 0 :(得分:4)

您可以在第一列中放置空图:

col1 <- plot_grid(plot1, plot2, plot3, NULL, align = "v", ncol = 1)

但是,对我来说,这不是嵌套绘图网格的情况。嵌套的绘图网格专门用于组合具有复杂排列的图,例如,一列中的一个绘图跨越另一列中的两行。对于你想要的,我会做一个plot_grid()电话,就像the other comment建议一样:

plot_grid(plot1, plot4, plot2, plot5, plot3, plot6, NULL, plot7,
          ncol = 2, align = "hv")

enter image description here

另请注意,指定特定宽高比时,align选项不起作用。您可以指定纵横比或对齐。在大多数情况下,没有必要指定宽高比,您可以在保存图形时执行此操作。函数save_plot()特别采用宽高比选项(应用于整个图像,但不是绘图区域)。

答案 1 :(得分:4)

上周我就是这么做的!尝试只调用一次plot_grid,其中NULL为空位。

myplotlist <- list(plot1, plot2, plot3, NULL, plot4, plot5, plot6, plot7, plot8)
plot_grid(plotlist=myplotlist, align = "v", ncol = 2)

答案 2 :(得分:0)

如果您想保持原始地块的大小差异并根据上面@ClausWilke的回答进行对齐,则我有一个简单的作弊修补程序。

始终可以使用Cowplot:plot_grid通过添加“嵌套的” NULL图并更改其高/宽比来微调图的路线。请参阅下面的解决方案:

group1<-plot_grid(plot1, plot2, plot3, nrow = 3)
group2<-plot_grid(plot4, plot5, plot6, plot7, NULL, rel_heights = c(1,1, 1,1,0.001), nrow = 5)
plot_grid(group1, group2, align='h', nrow=1)

这是输出: enter image description here

在那些轴参数无法完成的情况下,这对我很有帮助。