ggplot2实现:如何让列内堆叠多面板图共享Y轴标题
实现跨列共享Y轴标题的四面板图
要实现每列共享一个Y轴标题,你可以通过隐藏子图的Y轴标题,再单独创建垂直文本标题,结合patchwork的布局功能来实现。具体步骤如下:
1. 修改子图,隐藏重复Y轴标题
将四个子图的labs(y = ...)替换为labs(y = NULL),去掉重复的Y轴标签:
# 修改fig1a fig1a <- site1 %>% ggplot() + geom_line(aes(x = Date, y = Air), color = "red", size = 1) + geom_line(aes(x = Date, y = Water), size = 1, alpha = 0.7) + scale_x_date(date_breaks = "2 month", date_labels = "%b", expand = c(0, 0)) + labs(x = NULL, y = NULL) # 隐藏Y轴标题 # 其余原有注释、主题设置等代码保持不变 # 修改fig1b fig1b <- site2 %>% ggplot() + geom_line(aes(x = Date, y = Air), color = "red", size = 1) + geom_line(aes(x = Date, y = Water), size = 1, alpha = 0.7) + scale_x_date(date_breaks = "2 month", date_labels = "%b", expand = c(0, 0)) + labs(x = NULL, y = NULL) # 隐藏Y轴标题 # 其余原有注释、主题设置等代码保持不变 # 修改fig1c fig1c <- site1 %>% ggplot() + geom_line(aes(x = Date, y = Difference), size = 1) + scale_x_date(date_breaks = "2 month", date_labels = "%b", expand = c(0, 0)) + labs(x = NULL, y = NULL) # 隐藏Y轴标题 # 其余原有注释、主题设置等代码保持不变 # 修改fig1d fig1d <- site2 %>% ggplot() + geom_line(aes(x = Date, y = Difference), size = 1) + scale_x_date(date_breaks = "2 month", date_labels = "%b", expand = c(0, 0)) + labs(x = NULL, y = NULL) # 隐藏Y轴标题 # 其余原有注释、主题设置等代码保持不变
2. 创建跨列的垂直Y轴标题
用ggplot()生成两个仅含垂直文本的空图,作为每列的共享标题:
# 左列共享标题:温度(℃) left_col_title <- ggplot() + geom_text( aes(x = 0, y = 0), label = expression(paste("Temperature ( ", degree, "C)")), size = 6, angle = 90 # 设置文本垂直显示 ) + theme_void() # 移除所有绘图边框、刻度等元素 # 右列共享标题:温度差(℃) right_col_title <- ggplot() + geom_text( aes(x = 0, y = 0), label = expression(paste(Delta~" Temperature ( ", degree, "C)")), size = 6, angle = 90 ) + theme_void()
3. 组合所有图并调整布局
使用patchwork::wrap_plots()将标题和子图按3列布局排列,调整标题列与子图列的宽度比例,确保标题与子图对齐:
library(patchwork) wrap_plots( left_col_title, right_col_title, # 第一行:两列的共享标题 fig1a, fig1c, # 第二行:Site 1的两个子图 fig1b, fig1d, # 第三行:Site 2的两个子图 ncol = 3, widths = c(1, 10, 10) # 标题列宽度占比1,子图列占比10,可按需调整 )
效果说明
- 左列两个子图共享同一个垂直温度标题,右列共享温度差标题,避免重复;
- 完全保留你原有代码中的自定义图例、标注和样式设置;
- 宽度比例可根据最终绘图尺寸灵活调整,确保标题位置美观。
内容的提问来源于stack exchange,提问作者tassones
相关产品推荐
相关产品推荐

