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

如何将两个同X轴的ggplot图合并为对齐组合图?

用patchwork包实现ggplot垂直对齐组合

要将两个X轴刻度一致的ggplot合并为上下对齐的组合图(类似Kaplan-Meier曲线下方风险表的布局),最简便的方案是使用patchwork包——它专门针对ggplot对象设计,能自动对齐坐标轴,语法简洁直观。


1. 安装并加载依赖包

# 首次使用需安装
install.packages("patchwork")
library(patchwork)

2. 优化绘图细节

为了让布局更紧凑美观,微调下方直方图的主题:移除重复的X轴标题,调整边距减少冗余空白:

# 重新定义plot2,优化主题
plot2 <- model_ci$duration$full %>%
  as.vector() %>%
  as.data.frame() %>%
  setNames("duration") %>%
  ggplot() +
  geom_histogram(aes(x = duration),
                 breaks = seq(3, 10, by = 0.25),
                 alpha = 0.2,
                 col = "black") +
  geom_vline(data = data.frame(model_ci$duration$overview), aes(xintercept = recommendation), col = "purple", size = 2) + 
  geom_vline(data = data.frame(model_ci$duration$overview), aes(xintercept = min), col = "blue", size = 1) + 
  geom_vline(data = data.frame(model_ci$duration$overview), aes(xintercept = median), col = "red", size = 1) + 
  geom_vline(data = data.frame(model_ci$duration$overview), aes(xintercept = max), col = "blue", size = 1) +
  xlim(3, 10) + 
  xlab("") +  # 移除X轴标题,避免与上方图重复
  theme_bw() +
  theme(plot.margin = margin(5, 10, 5, 10))  # 调整边距,让上下图更紧凑

3. 垂直组合绘图

使用patchwork的/运算符直接拼接两个ggplot对象,系统会自动对齐X轴:

# 垂直组合:上方为plot1,下方为plot2
combined_plot <- plot1 / plot2

# 可选:添加整体标题并居中
combined_plot <- combined_plot + 
  plot_annotation(
    title = "治疗时长与患者治愈比例分析",
    theme = theme(plot.title = element_text(hjust = 0.5, size = 14))
  )

# 输出组合图
print(combined_plot)

备选方案:gridExtra包

如果不想使用patchwork,也可以用gridExtra包的grid.arrange函数实现垂直对齐:

install.packages("gridExtra")
library(gridExtra)
grid.arrange(plot1, plot2, ncol = 1, align = "v")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:20:50