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

如何使用patchwork对齐多张绘图的底部坐标轴?

解决patchwork对齐带coord_fixed绘图的底部坐标轴问题

因为coord_fixed()强制了绘图的宽高比,两个图的y轴范围不同会导致面板高度不一致,进而底部坐标轴错位。这里提供两种可行方案:

方案1:统一两个图的y轴范围

先获取两个图的y轴极值,统一设置ylim,确保面板高度一致:

require(ggplot2)
require(patchwork)

# 生成原始绘图
g1 <- ggplot() + 
  geom_point(aes(x = sort(rnorm(100)), y = sort(rnorm(100)))) + 
  geom_abline(slope = 1, linetype = 'dashed') + 
  coord_fixed()
g2 <- ggplot() + 
  geom_point(aes(x = sort(rnorm(100)), y = 2*sort(rnorm(100)))) + 
  geom_abline(slope = 1, linetype = 'dashed') + 
  coord_fixed()

# 获取两个图的y轴范围极值
y_range <- range(
  ggplot_build(g1)$layout$panel_params[[1]]$y.range,
  ggplot_build(g2)$layout$panel_params[[1]]$y.range
)

# 统一设置ylim
g1_aligned <- g1 + ylim(y_range)
g2_aligned <- g2 + ylim(y_range)

# 组合绘图,底部坐标轴自动对齐
(g1_aligned + g2_aligned) + plot_layout(widths = c(1,1))

方案2:使用patchwork的align参数

直接在plot_layout中指定align = "bottom",强制底部对齐:

(g1 + g2) + plot_layout(widths = c(1,1), align = "bottom")

这种方法无需修改y轴范围,但如果两个图的面板高度差异过大,可能会导致绘图元素被压缩/拉伸,优先推荐方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:35:40