【问题标题】:Plotting shapefiles in muliple panels in a single plot在单个图中在多个面板中绘制 shapefile
【发布时间】:2015-02-19 02:11:52
【问题描述】:

我的 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 文件,其中多个形状文件将被绘制在多个面板中。但是,此代码没有给出任何输出。代码有什么问题?

【问题讨论】:

  • 不指明宽高怎么办?只是 pdf("OurMaps.pdf")

标签: r plot sp


【解决方案1】:

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)

【讨论】:

    猜你喜欢
    • 2018-02-26
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 2014-03-06
    • 2021-01-03
    相关资源
    最近更新 更多