使用 par(mfrow=c(x,y)) 生成的图的每个面板上的标题键

2023-12-26

为了在科学出版物中使用,我想向用 par(mfrow=c(3,1)) 生成的一张图中的三个图添加一个键(A、B、C)作为“标题”。 向单个绘图添加漂亮的“标题”键的一个非常简单的解决方案是使用 title() 的“外部”参数(例如title(outer=T,adj=0,main="A",cex=1.1, col="black",font=2,line=-1))但是,当这用于多个绘图时,所有标题最终都会出现在同一个位置:

par(mfrow=c(3,1))
plot(rnorm(100),col="red")
title(outer=T,adj=0,main="A",cex=1.1,col="black",font=2,line=-1)
plot(rnorm(100),col="blue")
title(outer=T,adj=0,main="B",cex=1.1,col="black",font=2,line=-1)
plot(rnorm(100),col="green")
title(outer=T,adj=0,main="C",cex=1.1,col="black",font=2,line=-1)

我知道我可以使用布局和/或多行文字(使用 par(mfrow) 编译的图形面板的通用主标题 https://stackoverflow.com/questions/14660372/common-main-title-of-a-figure-panel-compiled-with-parmfrow)但是我觉得可能有一个我忽略的更简单的解决方案(我无法访问 Adob​​e Illustrator,并且想使用 R 来完全生成图形)。 我通过使用布局得到的解决方案还不够好(关键点与绘图分离太多,并且在左侧不够),而且我发现使用边距和坐标有点太乏味了。

par(mar=c(1,2,2,1))
layout(matrix(seq(1,6),ncol=1),heights=rep(c(1,3),3))
plot.new()
text(0,0.5,"A",cex=1.1,font=2)
plot(rnorm(100),col="red")
plot.new()
text(0,0.5,"B",cex=1.1,font=2)
plot(rnorm(100),col="blue")
plot.new()
text(0,0.5,"C",cex=1.1,font=2)
plot(rnorm(100),col="blue")

Undesired result Any help would be much appreciated. Even if the answer would be that this is simply not possible in an easy way, that would still be very helpful.


当你使用outer=TRUE,您要求将标题写在外边距(所有子图通用)。要做你想做的事,只需设置outer=FALSE:

outer = FALSE

line = -2
cex = 2
adj  = 0.025

par(mfrow=c(3,1))
plot(rnorm(100),col="red")
title(outer=outer,adj=adj,main="A",cex.main=cex,col="black",font=2,line=line)
plot(rnorm(100),col="blue")
title(outer=outer,adj=adj,main="B",cex.main=cex,col="black",font=2,line=line)
plot(rnorm(100),col="green")
title(outer=outer,adj=adj,main="C",cex.main=cex,col="black",font=2,line=line)

另外,如果您希望标签位于侧面,您可以使用mtext反而title:

line = 6
cex = 2
las = 2

par(mfrow=c(3,1), oma=c(1,6,1,1))

plot(rnorm(100),col="red")
mtext("A", side=2, line=line, cex=cex, las=las)
plot(rnorm(100),col="blue")
mtext("B", side=2, line=line, cex=cex, las=las)
plot(rnorm(100),col="green")
mtext("C", side=2, line=line, cex=cex, las=las)

将标签放在角落的另一种选择是:

line = 1
cex = 2
side = 3
adj=-0.05

par(mfrow=c(3,1), oma=c(1,6,1,1))

plot(rnorm(100),col="red")
mtext("A", side=side, line=line, cex=cex, adj=adj)
plot(rnorm(100),col="blue")
mtext("B", side=side, line=line, cex=cex, adj=adj)
plot(rnorm(100),col="green")
mtext("C", side=side, line=line, cex=cex, adj=adj)

可以使用负值adj.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 par(mfrow=c(x,y)) 生成的图的每个面板上的标题键 的相关文章

随机推荐