で最初のステップを試しましたgrid
。間にスペースを空けて、正方散布図の2x2行列を設定したいと思います。スペースを確保するために、実際には3 x 3のレイアウトを使用しています(質問1:もっと簡単な方法はありますか?)。以下の例からわかるように、点は外接する長方形の外側にプロットされます。どういうわけか、プロットで制限を指定する必要があります。質問2:これはどのように行うことができますか?最後に、ベースグラフィックを使用してプロットを作成できますか?[lattice
グラフィックスが機能し、標準layout
も使用できることはわかっていますが(またはggplot2
)、それが可能かどうかにも興味がgrid.layout
あります]
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()