我在一个页面上有一系列我想要的图表。我首先使用命令布局来指定我的绘图布局:
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的下角。
答案 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)
另一种方法是使用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)
答案 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")