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

如何用R的patchwork和ggplot2实现带独立与共享标题的多图布局

解决ggplot2三图布局:上方独立图+下方并列共享标题图

可以用patchwork包轻松实现这个需求,既保证轴对齐、保留背景色,又能完美添加跨图共享标题,步骤如下:

1. 准备示例图形

先写几个可直接运行的测试用ggplot图形,方便验证效果:

library(ggplot2)
library(patchwork)

# Plot1:带独立标题的上方图
plot1 <- ggplot(mtcars, aes(mpg, hp)) +
  geom_point() +
  labs(title = "Plot1 独立标题") +
  theme_bw()

# Plot2:下方左图
plot2 <- ggplot(mtcars, aes(disp, drat)) +
  geom_point(color = "red") +
  theme_bw()

# Plot3:下方右图
plot3 <- ggplot(mtcars, aes(qsec, wt)) +
  geom_point(color = "blue") +
  theme_bw()

2. 组合下方两图并添加共享标题

先把Plot2和Plot3横向拼接,再给这个组合块添加跨图共享标题,用wrap_plots+plot_annotation实现:

# 组合下方两图,添加居中的共享标题
bottom_plots <- wrap_plots(plot2, plot3, ncol = 2) +
  plot_annotation(
    title = "Plot2和Plot3的共享标题",
    theme = theme(plot.title = element_text(hjust = 0.5, size = 12))
  )

3. 上下拼接完成最终布局

用/符号把Plot1和组合好的下方图垂直拼接,patchwork会自动对齐坐标轴,不会产生多余空白:

# 生成最终布局
final_plot <- plot1 / bottom_plots

# 查看结果
print(final_plot)

关键说明

  • wrap_plots(plot2, plot3, ncol=2):横向并列两图时,默认会对齐坐标轴,不会破坏原有布局
  • plot_annotation给下方组合块添加的标题是跨两图的,不会丢失
  • 用/垂直拼接时,patchwork会自动处理上下图的间距和对齐,完整保留所有图的背景样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:32:05