You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在ggarrange()的2×2布局中,如何单独缩小第四个子图的高度?

解决ggarrange 2×2布局中单个子图高度调整问题

你遇到的问题是因为ggarrange()的heights参数是按行设置整体高度比例,不是针对单个子图的。你设置的heights = c(2,2,2,1)会被忽略后两个值——因为指定了nrow=2,参数只会取前两个值作为两行的高度比例,自然达不到让第四个子图高度减半的效果。

要实现你要的布局,需要通过嵌套ggarrange()拆分布局逻辑:

  1. 先把第一行的两个子图(p1、p2)拼成完整一行;
  2. 把第四个子图(p4)和空白区域拼成占满列宽的组合,让p4只占这个组合的上半部分;
  3. 把第三个子图(p3)和上面的p4组合拼成第二行;
  4. 最后把上下两行组合起来,统一设置图例。

具体代码如下:

# 拼接第一行的两个子图
top_row <- ggarrange(p1, p2, ncol = 2, labels = c("A", "B"))

# 让p4只占右侧列的上半部分,下半部分留空白
bottom_right <- ggarrange(p4, nrow = 2, heights = c(1, 1))

# 拼接第二行:左侧p3,右侧带空白的p4组合
bottom_row <- ggarrange(p3, bottom_right, ncol = 2, labels = c("C", "D"))

# 组合上下两行,统一设置图例
fig1 <- ggarrange(top_row, bottom_row, nrow = 2, 
                  common.legend = TRUE, legend = "top",
                  heights = c(2, 2))

这样设置后,p4的高度正好是p1、p2、p3的一半,同时保持2×2的布局结构。

内容的提问来源于stack exchange,提问作者knud_r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:58:44