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

FM *_*hof 5 plot r

为了在科学出版物中使用,我想在一个用par(mfrow = c(3,1))生成的图中的三个图中添加一个键(A,B,C)作为"标题".为单个绘图添加一个漂亮的"标题"键的一个非常简单的解决方案是使用title()的'outer'参数(例如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)
Run Code Online (Sandbox Code Playgroud)

键上方另一个

我知道我可以使用布局和/或mtext(使用par(mfrow)编译的图形面板的公共主标题)但是我觉得可能有一个更容易的解决方案,我正在忽略(我没有访问Adobe 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")
Run Code Online (Sandbox Code Playgroud)

不受欢迎的结果 任何帮助将非常感激.即使答案是简单地说这是不可能的,这仍然会非常有帮助.

Ric*_*mos 8

当您使用时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)
Run Code Online (Sandbox Code Playgroud)

剧情

另外,如果你想在标签是在身边,你可以使用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)
Run Code Online (Sandbox Code Playgroud)

plot2