R在多图布局中仅在一个图上绘制插图

时间:2013-03-21 03:06:39

标签: r layout

我在一个页面上有一系列我想要的图表。我首先使用命令布局来指定我的绘图布局:

layout(matrix(c(1,1,2,2,1,1,2,2,3,4,5,6),3,4,byrow=TRUE))

对于情节1,我有类似的东西:

plot(Easting,Northing, pch=16, col=grey(cex.size)) #The cex.size colours my dots according to some value

我现在想在情节1上画一个插图,但还没有进入情节2。 我试着按照代码:

par(fig=c(0.75, 1, 0, 0.25), new = T)
plot(spp.tmp[,1:2], col=cols[spp.tmp[,3]+1], pch=16)
par(fig=c(0,1,0,1))

但是这不起作用,因为par(fig())命令会覆盖我的布局,插图会出现在我整体图的下角,而不仅仅是在图1的下角。

2 个答案:

答案 0 :(得分:4)

两个选项,

您可以尝试在layout命令中加入插页(如果您坚持使用layout

这是第一个绘图跨越两行和一列的情况,第二个绘图是第一个绘图的右下角。第三个图是下面的,与第一个图相同,但没有插图。

layout( matrix(c(1,1,1,2,3,3,3,3), 4, 2, byrow = TRUE) )
## show the regions that have been allocated to each plot
layout.show(3)

enter image description here

另一种方法是使用TeachingDemos包中的subplot

library(TeachingDemos)
layout(matrix(c(1,1,0,2),2,2,TRUE))
plot(1)
subplot(plot(1), x = c(1.2),y=0.8)
plot(2)

enter image description here

答案 1 :(得分:3)

这是我使用基本图形的斧头方法。因为你用par()弄乱了,为什么不改变矩阵中的顺序并最后绘制棘手的一个。这样,par设置不会影响布局中的任何更多绘图,如果您首先绘制棘手的绘图。在这个例子中看起来很简单,但是当你有很多图并且只想要一个插入时,它就可以工作。

##generate some data
x<-rnorm(50)
y<-rnorm(50)
##set the layout
##so your first plot is plotted last
layout(matrix(c(2,2,0,1), 2,2, byrow=T))

#plot 1 is on the bottom right
plot(x,y, col="grey30", xlab="", ylab="")
#plot 2 is across the top
plot(x,y, col="grey30", xlab="", ylab="")
##set par to place the next plot in the existing plotting area
## and use fig to position it
par(fig=c(.65, .95, .55, .85), new = TRUE)

#inset 3rd plot int top plot, this effectively gives you a blank plot to populate
plot(x,y, col="white",  xlab="", ylab="")
#and make the background white
rect(par("usr")[1],par("usr")[3],par("usr")[2],par("usr")[4],col = "white")
##then just add your points afterwards
points(x,y,col="tomato")