如何格式化2行3列箱线图:共享Y轴标签并调整X轴标签位置
优化多面板箱线图的轴标签布局
可以通过调整基础绘图系统的边距设置和文本添加函数,实现你需要的轴标签共享布局。以下是修改后的代码:
# 设置2行3列布局,调整外部/内部边距以预留标签空间 par(mfrow = c(2, 3), oma = c(3, 4, 0, 0), # 下、左、上、右方向的外部边距 mar = c(3, 1, 1, 1)) # 子图的内部边距(压缩左侧边距) # 第一行:PA分组箱线图 # 第一个图:显示X轴标签(PA Type)和Y轴标签 boxplot(SpR ~ PA, data = Uni, cex.lab = 1.5, cex.axis = 1.5, xlab = 'PA Type', ylab = 'Species Richness') # 第二、三个图:隐藏X/Y轴标签 boxplot(Evenness ~ PA, data = Uni, cex.lab = 1.5, cex.axis = 1.5, xlab = '', ylab = '') boxplot(RAI_site ~ PA, data = Uni, cex.lab = 1.5, cex.axis = 1.5, xlab = '', ylab = '') # 第二行:Landscape分组箱线图 # 第一个图:显示X轴标签(Landscape Type),隐藏Y轴标签 boxplot(SpR ~ Landscape, data = Uni, cex.lab = 1.5, cex.axis = 1.5, xlab = 'Landscape Type', ylab = '') # 第二、三个图:隐藏X/Y轴标签 boxplot(Evenness ~ Landscape, data = Uni, cex.lab = 1.5, cex.axis = 1.5, xlab = '', ylab = '') boxplot(RAI_site ~ Landscape, data = Uni, cex.lab = 1.5, cex.axis = 1.5, xlab = '', ylab = '') # 为每列添加全局Y轴标签(实现上下两行共享同列Y轴标签) mtext('Species Richness', side = 2, line = 2, cex = 1.5, outer = TRUE, at = 0.75) mtext('Species Evenness', side = 2, line = 2, cex = 1.5, outer = TRUE, at = 0.5) mtext('Relative Abundance', side = 2, line = 2, cex = 1.5, outer = TRUE, at = 0.25)
关键调整说明:
- 边距控制:
oma预留外部空间放置全局标签,mar压缩子图内部边距避免标签重叠。 - 子图标签取舍:仅在每行最左侧的图显示该行的X轴标签,其余子图隐藏冗余标签。
- 全局标签添加:通过
mtext的outer=TRUE参数,在外部边距中为每列添加统一的Y轴标签,实现上下两行共享同指标的Y轴标签。
如果需要整个面板共享一个统一Y轴标签,可将最后三行mtext替换为:
mtext('统一Y轴标签内容', side = 2, line = 2, cex = 1.5, outer = TRUE)
内容的提问来源于stack exchange,提问作者Erik
相关产品推荐
相关产品推荐

