我的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文件,其中多个形状文件将在多个面板中绘制。但是,此代码没有输出。代码有什么问题?
答案 0 :(得分:3)
par(mfrow=c(2,3))
只能用于基本图形系统。
sp
函数spplot()
使用lattice
图形系统,该系统使用grid
图形引擎。这是R的低级图形系统。两个软件包都是基本R分发的一部分。
您无法看到输出,因为lattice
函数返回类trellis
的对象,该对象需要显式的打印语句print(spplot(...))
(在脚本中)。
请参阅R FAQ 7.22:为什么格子/格子图形不起作用?
最可能的原因是你忘了告诉R显示 图形。诸如xyplot()之类的格子函数创建了一个图形对象,但是 不显示它(ggplot2图形和Trellis也是如此) 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)