R语言 未按照www.example.com所述渲染多个图layout.show

xmd2e60i  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(95)

使用raster包及其plot函数,我想将Raster*对象的六个图按列排列为2行3列。因此,我设置了如下布局:

layout(mat=matrix(1:6, nrow=2, ncol=3), heights=c(1,1), widths=c(2,1,1))

调用layout.show(6)会得到这个预览,这正是我想要的:

然而,在第一个图被放置在1所在的位置(如预期的那样)之后,第二个图被放置在3所在的位置(不如预期的那样)。为什么?**
当我再次调用layout.show(6)时,我得到了这个,这不是我想要的:

有趣的是,使用par(mfcol=c(2,3))而不是layout * 也 * 按行放置图(即行为类似于mfrow)。
(我知道我可以重新安排plot调用的顺序,但我想知道为什么这不像我期望的那样工作。

enyaitl3

enyaitl31#

你不能用plot(Raster*)来设置布局本身;从而覆盖您的设置。你可以使用image(x)来代替plot(x),但是这样你就不会得到一个图例。
也许最好的方法是使用terra包(terraraster的替代品)。另请注意参数“clip”。

f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
layout(mat=matrix(1:6, nrow=2, ncol=3), heights=c(1,1), widths=c(2,1,1))
plot(r)
plot(r, clip=FALSE)
plot(r)
plot(r, clip=FALSE)
plot(r)
plot(r, clip=FALSE)

相关问题