首页 > 解决方案 > 跨面板叠加文本

问题描述

我使用par(mfrow = (3, 4)). 现在我想用这样的文本覆盖每一行: 在此处输入图像描述

实现这一目标的最简单方法是什么?

谢谢!

标签: r

解决方案


选项1

绘制所有图形后添加文本:

par(list(mfrow = c(3, 4),
         mar=c(2,2,1,1)))
lapply(1:12,FUN=function(x) plot(1:100,runif(100),cex=0.2))

##You will have to manually adjust these values to fit your figure
xval = -150
yval = 0.5
y_incr = 1.59

text(x=xval, y=yval, labels="TextToAdd3",col=rgb(0,0,1,0.5), cex=3, xpd=NA)
text(x=xval, y=yval+y_incr, labels="TextToAdd2",col=rgb(0,0,1,0.5), cex=3, xpd=NA)
text(x=xval, y=yval+y_incr*2, labels="TextToAdd1",col=rgb(0,0,1,0.5), cex=3, xpd=NA)

在此处输入图像描述

选项 2 每次在第三列中绘制时,左边距的中心标题。这意味着手动调整值的填充更少(图看起来与上面相同):

par(list(mfrow = c(3, 4),
         mar=c(2,2,1,1)))

texts=list("TextToAdd1",
           "TextToAdd3",
           "TextToAdd3")

for(i in 1:12){
  plot(1:100,runif(100),cex=0.2)
  if((i+1)%%4==0){
    mtext(text=texts[[i/3]],side=2,line=par()$mar[2], las=1,col=rgb(0,0,1,0.5), cex=3,adj=0.5)
  }
}

推荐阅读