8

我非常绝望地试图在一个地块上调整一个光栅堆栈的两个级别图。似乎rasterVis::levelplot没有par(mfrow = c(...))选择拆分窗格。使用两个光栅堆栈的示例,应在新的绘图窗口上并排排列:

f <- system.file("external/test.grd", package="raster")
r1 <- stack(raster(f),log(raster(f)))
r2 <- stack(raster(f)-500,raster(f)+500)

par(mfrow=c(2,2))
  levelplot(r1)
  levelplot(r2)

在这里,levelplot(r1)正在全尺寸窗口上绘制,而levelplot(r2)不幸的是正在绘制levelplot(r1)

levelplot我试着玩弄,用print函数包装调用,它需要splitnewpage = false选项。不幸的是,我不知道如何split正确使用,所以我最终只感到沮丧。

非常感谢您的帮助,在此先感谢

和我

4

1 回答 1

16

对于基于网格的图形,包括由lattice生成的图形(它是rasterVis的绘图函数的基础),gridExtra函数grid.arrange()的作用与基本 R 图形的作用相同par(mfcol=)

library(gridExtra)
p1 <- levelplot(r1)
p2 <- levelplot(r2)
grid.arrange(p1, p2, ncol=2)

在此处输入图像描述

编辑: 另一种特定于晶格的解决方案使用split=参数 to print.trellis(),即晶格图的绘图方法(ht baptiste 和 Oscar Perpiñán)。split=接受四个数字的向量。矢量的第 3 和第 4 个元素给出了显示中的列数和行数,而它的第 1 和第 2 个元素给出了正在打印的对象的列和行位置。

library(gridExtra)
p1 <- levelplot(r1)
p2 <- levelplot(r2)
print(p1, split=c(1,1,2,1), more=TRUE)
print(p2, split=c(2,1,2,1))
于 2014-02-25T17:43:16.990 回答