我有一个4x3格式的图,但只显示了10个图。
par(mfrow=c(4,3)) #Grid layout
现在我要为所有人插入一个传奇!在完整设备区域的中间和最右侧角落绘制另一个文本以获取一些信息。但是现在使用此代码,图例位于最后一个(!)小图的中间,最后一个图的最右边的文本。如何将它们移动到我的设备中间?
#Legend
par(xpd=NA)
legend(legend="Legend", col=hblue,lty=1, lwd=2, bty="n", text.col="black", ncol=1, "bottom",
inset = c(0.0, -.1),cex=0.65)
#Inserting the source of data
text_note=paste("Source:")
mtext(text_note ,cex=0.4,col=hgrey,side = 1, line = 4, outer = FALSE,padj=0,adj=1)
答案 0 :(得分:2)
使用par(mfrow)
时,您正在为每个绘图切割设备区域,因此很难到达当前位置以外的区域,并且需要按顺序填充绘图区域。这是使用layout
和外边距的策略。
首先,我使用layout()
来指定我想要创建绘图的顺序,我将结束的中心方块留下,以便最后创建图例。然后我创建一个空白的绘图窗口,只添加图例。
要获取浮动文本,我使用外边距区域。我使用par(oma=c(2,0,0,0))
在绘图区域的底部请求一些额外的空间,然后我使用mtext()
将文本添加到任何单个绘图之外的外边距区域。这是代码。
par(oma=c(2,0,0,0))
layout(matrix(c(1,2,3,4,9,5,6,7,8), byrow=T, ncol=3))
for(i in 1:8) {
plot(1:10, runif(1:10), main=paste("plot", i))
}
plot.new()
plot.window(0:1, 0:1)
legend("center","center", c("Apples","Oranges"), col=c("red","orange"), pch=20)
mtext("source", side=1, outer=T, adj=.9)
这是输出。
如果你只想让中心的文字带有图例,你可以忘记外边距和mtext
,只需使用
text(.5,0, "Source")
在致电legend()
之后。这将在中间图的底部中心添加文本。