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

如何在Base R中居中排列5个绘图(3+2两行布局)

实现两行绘图网格,第二行居中显示2个图

方法1:Base R原生layout()函数(无需额外包)

直接自定义布局矩阵,通过调整列宽度让第二行的两个图居中,避免右下角空白:

# 定义布局矩阵:2行3列,第三列第二行设为0表示不绘制图形
layout_matrix <- matrix(c(1, 2, 3, 4, 5, 0), nrow = 2, byrow = TRUE)
# 调整列宽度,让第一、第三列宽度为中间列的一半,实现第二行两图居中
layout(layout_matrix, widths = c(0.5, 1, 0.5))

# 依次绘制你的图形
p_1
p_2
p_3
p_4
p_5

方法2:如果是ggplot2图形(用patchwork包更简洁)

patchwork是专门用于拼接ggplot图的工具,用空白占位图配合宽度调整就能轻松实现居中:

library(patchwork)

# 第一行放3个图,第二行用空白占位图包裹两个目标图,调整宽度实现居中
(p_1 + p_2 + p_3) / (plot_spacer() + p_4 + p_5 + plot_spacer()) +
  plot_layout(widths = c(0.25, 1, 1, 0.25))

方法3:ggplot2图形也可用gridExtra包

通过nullGrob()生成空白占位,搭配列宽调整实现布局:

library(gridExtra)

# 拆分上下行元素,第二行添加左右空白占位
top_plots <- list(p_1, p_2, p_3)
bottom_plots <- list(nullGrob(), p_4, p_5)

# 组合布局,设置列宽让第二行两图居中
grid.arrange(grobs = c(top_plots, bottom_plots),
             nrow = 2, ncol = 3,
             widths = c(0.5, 1, 0.5))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:15:05