我剛剛嘗試了我的第一步grid
。我想建立一個2 x 2的正方形散點圖矩陣,其間有一些空間。爲了獲得空間,我實際上使用了3 x 3佈局(問題1:是否有更簡單的方法?)。從下面的示例中可以看出,這些點在邊界矩形外繪製。我不知何故必須在劇情中指定限制。問題2:如何做到這一點?最後,我可以使用基礎圖形來創建圖表嗎? [我知道lattice
圖形會工作,也是一個標準layout
可以使用(或ggplot2
),但我有興趣,如果可能的話與grid.layout
,太]grid:如何指定限制以避免grid.points()繪製在視口之外?
require(grid)
## generate data to be plotted in the top left plot
X <- matrix(rexp(2000), ncol=2)
## plot device
file <- "foo.pdf"
pdf(file=file, width=10, height=10)
## set up grid.layout
gl <- grid.layout(3, 3, respect=rbind(c(0,1,0), c(1,1,1), c(0,1,0)),
widths=unit(c(3,1,3), "inches"), heights=unit(c(3,1,3), "inches")) # define grid layout
pushViewport(viewport(layout=gl)) # use this layout in a viewport
## (1,1) plot
pushViewport(viewport(layout.pos.row=1, layout.pos.col=1, name="11"))
grid.points(X[,1], X[,2], pch=1) # points
grid.rect() # bounding rectangle
grid.xaxis() # x-axis
grid.yaxis() # y-axis
grid.text(expression(italic(X[1])), y=unit(-3, "lines")) # x-axis label
grid.text(expression(italic(X[2])), x=unit(-3, "lines"), rot=90) # y-axis label
grid.text("Plot 1", x=0.86, y=0.9, gp=gpar(fontface="bold", cex=1.6)) # add label
upViewport()
## (1,2) plot
pushViewport(viewport(layout.pos.row=1, layout.pos.col=3, name="13"))
grid.rect()
upViewport()
## (2,1) plot
pushViewport(viewport(layout.pos.row=3, layout.pos.col=1, name="31"))
grid.rect()
upViewport()
## (2,2) plot
pushViewport(viewport(layout.pos.row=3, layout.pos.col=3, name="33"))
grid.rect()
upViewport()
## plot device
dev.off()
在視口中使用'clip = TRUE'? – baptiste
另請參閱'dataViewport'和'grid.multipanel()' – baptiste
剪切關閉區域;我想要顯示所有數據。 '?grid.multipanel'只給了我'grid-internal',它不應該被使用(就像它說的那樣)。我嘗試在'(1.1)'中的'pushViewport'後面使用'pushViewport(dataViewport(X [,1],X [,2]))',但是獲得'Push.vp.default(X [[1L] ],...):只有在推送視口時纔有效' –