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

如何在R语言多面板图的Y轴上方添加A)、B)类图标签

解决R语言2×2多面板图添加子图标签的问题

不用依赖手动定位的locator(),可以通过自动获取绘图区域坐标或使用mtext()来精准添加标签,以下是两种可靠的实现方式:

方法1:利用par("usr")自动计算坐标

par("usr")会返回当前绘图区域的边界坐标(格式为c(xmin, xmax, ymin, ymax)),基于这个可以计算出Y轴正上方的标签位置,完全避免手动定位的误差:

a <- seq(1, 29) + 4*runif(29, 0.4)
b <- seq(1, 29)^2 + runif(29, 0.98)

# 设置2×2面板布局
par(mfrow=c(2, 2))

# 子图A
plot(a, b , pch=20)
usr <- par("usr") # 获取当前绘图区域的边界坐标
# 在Y轴顶部左侧添加标签,偏移量根据绘图范围自动计算
text(usr[1], usr[4] + 0.05*(usr[4]-usr[3]), "A)", font=2, adj=0) 

# 子图B
plot(a - b , pch=18)
usr <- par("usr")
text(usr[1], usr[4] + 0.05*(usr[4]-usr[3]), "B)", font=2, adj=0)

# 子图C
hist(a, border=FALSE, col=rgb(0.2, 0.2, 0.8, 0.7), main="")
usr <- par("usr")
text(usr[1], usr[4] + 0.05*(usr[4]-usr[3]), "C)", font=2, adj=0)

# 子图D
boxplot(a , col="grey" , xlab="a")
usr <- par("usr")
text(usr[1], usr[4] + 0.05*(usr[4]-usr[3]), "D)", font=2, adj=0)

方法2:使用mtext()直接指定位置

mtext()专门用于在绘图区域边缘添加文本,通过参数精准控制位置,代码更简洁易维护:

a <- seq(1, 29) + 4*runif(29, 0.4)
b <- seq(1, 29)^2 + runif(29, 0.98)

par(mfrow=c(2, 2))

# 子图A
plot(a, b , pch=20)
# side=3表示顶部边缘,line=1控制标签与绘图区域的距离,adj=0实现左对齐(对应Y轴正上方)
mtext("A)", side=3, line=1, adj=0, font=2)

# 子图B
plot(a - b , pch=18)
mtext("B)", side=3, line=1, adj=0, font=2)

# 子图C
hist(a, border=FALSE, col=rgb(0.2, 0.2, 0.8, 0.7), main="")
mtext("C)", side=3, line=1, adj=0, font=2)

# 子图D
boxplot(a , col="grey" , xlab="a")
mtext("D)", side=3, line=1, adj=0, font=2)

两种方法都能保证标签位置统一、可重复,推荐使用mtext()方案,代码更简洁且适配各类绘图类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:25:23