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

如何格式化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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:12:41