在R中使用layout函数绘制多个栅格图层

5
我试图在同一张图中绘制五个光栅图。使用par()方法可以轻松实现,但我希望我的多合一图形在顶部光栅图居中对齐。创建一个虚拟的图表可以正常工作:
m <- rbind(c(1, 1), c(2, 3), c(4,5))
print(m)

     [,1] [,2]
[1,]    1    1
[2,]    2    3
[3,]    4    5

layout(m)
layout.show(5)

虚拟图

但是当我尝试使用我的光栅图时,一切都出错了:

m <- rbind(c(1, 1), c(2, 3), c(4,5))
layout(m)

plot(rast1)
plot(shape, add=TRUE)
plot(rast2)
plot(shape, add=TRUE)
plot(rast3)
plot(shape, add=TRUE)
plot(rast4)
plot(shape, add=TRUE)
plot(rast5)
plot(shape, add=TRUE)

光栅图

每个图中添加的“形状”只是我正在工作的受保护区域的轮廓。下面三个看起来位置正确,但显然上面的不对。假设底部三个处于正确位置,我还想使每个形状更大。

我尝试过更改绘图边缘,但情况只会变得更糟。我还尝试使用image()而不是plot(),如此处所建议的,但那样只会出现错误消息。

以下是一份可复制的示例:

library(raster)
r <- raster(ncols=5, nrows=5, xmn=1, xmx=5, ymn=1, ymx=5)
rast1 <- setValues(r, rnorm(25))
rast2 <- setValues(r, rnorm(25))
rast3 <- setValues(r, rnorm(25))
rast4 <- setValues(r, rnorm(25))
rast5 <- setValues(r, rnorm(25))

m <- rbind(c(1, 1), c(2, 3), c(4,5))
layout(m)

plot(rast1)
plot(rast2)
plot(rast3)
plot(rast4)
plot(rast5)

这将得到一个非常相似的乱糟糟的外观:

在此输入图片描述

有没有人能帮我 a) 修复每个栅格的位置和 b) 让每个栅格变大?任何帮助都将不胜感激,我快要放弃了,只好手动将分开的栅格粘合在一起。

1个回答

4

如果您使用image而不是plot,我认为这会起作用。

library(raster)
r <- raster(ncols=5, nrows=5, xmn=1, xmx=5, ymn=1, ymx=5)
r1 <- r2 <- r3 <- r4 <- r5 <- setValues(r, rnorm(ncell(r)))

m <- rbind(c(1, 1), c(2, 3), c(4,5))
layout(m)

image(r1)
image(r2)
image(r3)
image(r4)
image(r5)

这个代码在可重现的例子中可以工作,但是在我的自定义光栅图上不行: plot(fires.3km, axes=FALSE, box=FALSE, col=RHGL(100), par(mar=c(2, 2, 2, 2)), main= "Number of Fires") 有什么办法可以将它与image()函数结合起来吗? 我最终得到了顶部光栅图严重扭曲的结果。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接