如何用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
相关产品推荐
相关产品推荐

