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

如何用plot_grid将每个子图的标签移至底部居中位置?

给cowplot组合的子图添加底部居中标签

可以实现,下面提供两种简洁的方法:

方法一:为每个子图单独添加标签后再组合

先给每个子图添加底部居中的标签,再用plot_grid组合。使用ggdraw()配合draw_label()可以精准控制标签位置:

library(ggplot2)
library(cowplot)
df <- data.frame(
   x = 1:10, y1 = 1:10, y2 = (1:10)^2, y3 = (1:10)^3, y4 = (1:10)^4
)

# 给每个子图添加底部居中标签
p1 <- ggdraw(ggplot(df, aes(x, y1)) + geom_point()) + 
  draw_label("(a) Figure 1", x = 0.5, y = 0, vjust = -0.5)
p2 <- ggdraw(ggplot(df, aes(x, y2)) + geom_point()) + 
  draw_label("(b) Figure 2", x = 0.5, y = 0, vjust = -0.5)
p3 <- ggdraw(ggplot(df, aes(x, y3)) + geom_point()) + 
  draw_label("(c) Figure 3", x = 0.5, y = 0, vjust = -0.5)
p4 <- ggdraw(ggplot(df, aes(x, y4)) + geom_point()) + 
  draw_label("(d) Figure 4", x = 0.5, y = 0, vjust = -0.5)

# 组合子图
plot_grid(p1, p2, p3, p4, align = 'hv')

方法二:利用plot_grid的内置标签参数

直接通过plot_grid的labels参数设置标签,再调整label_y、vjust和label_x将标签定位到子图底部居中:

library(ggplot2)
library(cowplot)
df <- data.frame(
   x = 1:10, y1 = 1:10, y2 = (1:10)^2, y3 = (1:10)^3, y4 = (1:10)^4
)

p1 <- ggplot(df, aes(x, y1)) + geom_point()
p2 <- ggplot(df, aes(x, y2)) + geom_point()
p3 <- ggplot(df, aes(x, y3)) + geom_point()
p4 <- ggplot(df, aes(x, y4)) + geom_point()

# 组合时添加底部居中标签
plot_grid(p1, p2, p3, p4, align = 'hv',
          labels = c("(a) Figure 1", "(b) Figure 2", "(c) Figure 3", "(d) Figure 4"),
          label_x = 0.5,  # 水平居中
          label_y = 0,    # 垂直位置设为子图底部
          vjust = -0.5)   # 调整标签向下偏移,避免和子图重叠

说明:vjust的值可以根据需要微调,确保标签和子图之间的间距合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:50:27