1

我的 R 数据中保存了一些形状文件。我首先执行以下

library(sp)

然后运行以下代码:

pdf("OurMaps.pdf", width=11, height=8.5)
par(mfrow=c(2,3))

spplot(sh1998, zcol="lulc.1", col.regions=colorcode, col="transparent")
spplot(sh1999, zcol="lulc.1", col.regions=colorcode, col="transparent")
spplot(sh2002, zcol="lulc.1", col.regions=colorcode, col="transparent")
spplot(sh2003, zcol="lulc.1", col.regions=colorcode, col="transparent")
spplot(sh2009, zcol="lulc.1", col.regions=colorcode, col="transparent")
spplot(sh2014, zcol="lulc.1", col.regions=colorcode, col="transparent")

dev.off()

我想要从这段代码中得到一个 PDF 文件,其中多个形状文件将绘制在多个面板中。但是,此代码没有给出任何输出。代码有什么问题?

4

1 回答 1

3

par(mfrow=c(2,3))只能用于基本图形系统。该sp函数spplot()使用lattice图形系统,该系统利用grid图形引擎。这是一个用于 R 的低级图形系统。这两个包都是基本 R 发行版的一部分。

您看不到输出,因为lattice函数返回 class 的对象trellis,这需要显式的 print 语句print(spplot(...))(在脚本中)。请参阅R FAQ 7.22:为什么 lattice/trellis graphics 不起作用?

最可能的原因是您忘记告诉 R 显示图表。xyplot() 等格函数创建图形对象,但不显示它(ggplot2 图形和 S-PLUS 中的格状图形也是如此)。图形对象的 print() 方法产生实际显示。当您在命令行交互地使用这些函数时,结果会自动打印出来,但是在 source() 或您自己的函数中,您将需要一个显式的 print() 语句。

您可以grid.arrange()gridExtra包中使用的排列多个图:

library("gridExtra")
library("lattice")

p <- xyplot(1~1)
grid.arrange(p, p, p, p, p, p, ncol=2, nrow=3)

网格排列示例

于 2014-12-20T10:34:37.760 回答