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

如何手动调整ggarrange合并图高度实现Y轴等高对齐

Cox回归风险曲线子图排版对齐解决方案

你遇到的Y轴不对齐问题,本质是嵌入在单个子图内部的图例挤占了该子图的绘图区域高度,在完全保留你现有自定义主题、两个子图的绘制逻辑的前提下,有3种可直接落地的实现方式,都能在保留图例的前提下让两个子图的Y轴绘图区完全对齐:

方案1:调整ggarrange()参数实现统一公共图例(适配你现有代码)

这是改动最小的方案,不需要重新写绘图逻辑,只需要调整合并时的设置:

  • 先移除两个子图的内部图例:把1年风险子图原有的theme(legend.position = "bottom")修改为theme(legend.position = "none"),3年风险子图本身已经设置show.legend = F,无需额外改动
  • 调用ggarrange()时新增3个核心参数:
    • 开启common.legend = T模式,自动提取两个子图的公共图例做统一展示
    • 设置legend = "bottom",把公共图例放置在整个合并图的最底部,不占用单个子图的排版空间
    • 用heights = c(1, 1)手动指定两个子图的排版占位完全等大

对应的调用代码示例:

# 假设p1为1年风险子图,p2为3年风险子图
p1 <- p1 + theme(legend.position = "none")
p2 <- p2 + theme(legend.position = "none")

ggarrange(
  p1, p2,
  ncol = 1, nrow = 2,
  common.legend = T, # 开启公共图例合并
  legend = "bottom", # 图例统一放置在全图底部
  heights = c(1, 1), # 强制两个子图占位等高
  labels = c("(a) 1年疾病进展预测", "(b) 3年疾病进展预测") # 可选:添加子图标识
)

该逻辑的核心是把图例从单个子图的排版空间中剥离,放到整个画布的公共区域,两个子图自身的排版空间完全一致,绘图区自然不会出现高度差,从根源上解决图例挤压绘图区的问题。

方案2:用patchwork替代合并函数(排版灵活性更高)

如果你愿意调整合并工具,patchwork是ggplot2生态中排版适配性更强的工具,不需要强制移除原有子图的图例设置,也能实现绘图区自动对齐:

  • 直接用/运算符完成1列2行的拼接,在排版参数中强制指定两个图的绘图面板对齐,不会因为单个图带图例就压缩绘图区高度

对应的核心代码:

library(patchwork)
# 直接拼接原有两个子图,不需要修改原有图例设置
combined_plot <- (p1 / p2) +
  plot_layout(
    nrow = 2,
    heights = c(1, 1),
    axes = "collect" # 可选:统一收集重复坐标轴元素,减少冗余空白
  )

# 可选:如果需要把图例统一放到全图底部,添加全局主题设置
combined_plot & theme(legend.position = "bottom")

该方案的优势是排版时会自动计算两个图的实际绘图面板边界,就算保留1年子图原有底部图例的设置,也会自动给图例预留独立空间,保证两个Y轴的长度、垂直位置完全匹配,不会出现错位。

方案3:手动网格排版(可控性最强)

如果不想更换现有依赖包,也可以通过grid包手动定义排版网格,完全自主控制每块区域的高度:

  • 把整个画布划分为3行独立的网格区域:第一行放置1年风险子图的绘图区,第二行放置独立的图例区域,第三行放置3年风险子图的绘图区
  • 手动设置绘图区所在的两行高度完全相等,就算图例区域占了一定高度,也不会挤压绘图区的空间,两个Y轴的高度可以实现像素级对齐。

实操避坑提示

  • 不建议通过手动拉大带图例子图的高度来“凑对齐”,这种硬凑的方式在导出不同尺寸的图片时会再次出现错位,本质没有解决绘图区被图例挤占的核心问题
  • 只要保留子图内部嵌入图例的设置,不管用哪个合并工具,都需要开启绘图面板强制对齐的参数,不要依赖系统自动适配排版。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 10:15:03