【问题标题】:How can I make multiplots for a SpatialPixelsDataFrame class object in R?如何为 R 中的 SpatialPixelsDataFrame 类对象制作多图?
【发布时间】:2018-08-10 08:06:30
【问题描述】:

我有一个类似于one provided in a StackOverflow response 的代码,使用的是 Ege Rubak 的这个答案,但是我正在对这一年进行分析,所以我有一个特定年份每个月的图像。

library(gstat)
library(sp)

lat <-  c(-23.49174, -23.49179, -23.49182, -23.49183, -23.49185, -23.49187)
long <- c(152.0718, 152.0718, 152.0717, 152.0717, 152.0717, 152.0717)
pH <- c(8.222411, 8.19931, 8.140428, 8.100752, 8.068141, 8.048852)
sample <- data.frame(lat, long, pH)

x.range <- range(sample$long)
y.range <- range(sample$lat)

x<-seq(x.range[1], x.range[2], length.out=20)
y<-seq(y.range[1], y.range[2], length.out=20)
grd<-expand.grid(x,y)

coordinates(sample) = ~long+lat
coordinates(grd) <- ~ Var1+Var2
gridded(grd) <- TRUE

proj4string(sample) <- CRS("+proj=longlat +datum=WGS84")
proj4string(grd) <- CRS("+proj=longlat +datum=WGS84")

dat.idw <- idw(formula=pH ~ 1, locations = sample, newdata = grd, idp = 2.0)
#> [inverse distance weighted interpolation]

plot(dat.idw, axes = T)

如下图所示,如何将 12 个图像合并到一个图中并执行类似于 ggplot facet wrap 的操作?

测试this answer中建议的代码:

library(gridExtra)
library(raster)
s <- stack(raster(dat.idw))
s2 <- stack(raster(dat.idw))

p1 <- levelplot(s)
p2 <- levelplot(s2)
grid.arrange(p1, p2, ncol=2)

# Error in UseMethod("levelplot") : 
#  no applicable method for 'levelplot' applied to an object of class 
# "c('RasterStack', 'Raster', 'RasterStackBrick', 'BasicRaster')"

【问题讨论】:

    标签: r geospatial spatial raster levelplot


    【解决方案1】:

    您可以通过准备光栅堆栈对象并将其提供给函数来使用 rasterVis 包中的 levelplot 函数。

    library(raster)
    library(rasterVis)
    
    r1 <- raster(dat.idw)
    r2 <- raster(dat.idw)
    
    # I am only using two rasters as an example
    # You can stack 12 rasters for your raster stack 
    s <- stack(list(r1, r2))
    
    rasterVis::levelplot(s)
    

    或使用sp 包中的spplot

    sp::spplot(s)
    

    tmap 包。

    库(tmap)

    tm_shape(s) +
      tm_raster()
    

    【讨论】:

    • 谢谢。你能告诉我一些好的教程,以便我可以编辑这个情节吗?我将使用 levelplot (s) 或 spplot (s)。
    • 有关rasterVis 包(oscarperpinan.github.io/rastervis)的介绍请参见本网站。
    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多