在R(Win64)中,我尝试使用layout()命令在一个绘图窗口中绘制光栅图像和直方图的组合,并使用定义布局的矩阵。以下是一些简化数据的示例代码:
library(raster)
r <- raster(ncols=5, nrows=5, xmn=1, xmx=5, ymn=1, ymx=5)
rast1 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))
rast2 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))
rast3 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))
layout(matrix(c(1,2,3,4,1,2,3,5,1,2,3,6), 3, 4, byrow=T))
layout.show(6)
plot(rast1, axes=F, ann=F, legend=F, box=F, useRaster=T)
plot(rast2, axes=F, ann=F, legend=F, box=F, useRaster=T)
plot(rast3, axes=F, ann=F, legend=F, box=F, useRaster=T)
hist(rnorm(100), ann=F, axes=F)
hist(rnorm(100), ann=F, axes=F)
hist(rnorm(100), ann=F, axes=F)
如您所见,我正在尝试绘制三个光栅图像(rast1,rast2,rast3),每个图像跨越1列,每行3行,旁边有3个直方图,每个直方图跨越1列和1行。 layout.show()命令给出了这个想法。
当我运行此代码时,似乎第一个绘图(栅格)命令也会重置绘图窗口的布局,导致所有后续绘图在标准3x4网格中绘制(第5个绘图现在与第一个绘图重叠)。布局设置似乎很合理,因为我可以在适当的布局中绘制六个直方图。但是光栅图弄得很糟糕。
我怀疑{raster}中的plot()命令有些东西正在弄乱layout()命令,但我不知道为什么或如何。有没有其他方法来实现这种布局?另一个基于栅格的命令?有没有办法在栅格图之间重置布局?
提前致谢。
答案 0 :(得分:5)
这里可能存在S4方法和layout()之间的问题。作为一种解决方法,它似乎可以用plot()替换plot()。而不是绘图(rast1,axes = F,ann = F,legend = F,box = F,useRaster = T),使用图像(rast1,axes = F,ann = F,asp = 1)来获得方形图像映射。