如何使用trellis.focus从R中的栅格添加轮廓

时间:2018-07-31 10:56:07

标签: r contour lattice levelplot

我在堆栈中有三个栅格。我想使用sp包在具有三列和三行的同一图中绘制它们。我通过使用以下代码实现了这一点

STEP-1

    library(raster)
    library(rgdal)
    library(sp)
    library(rworldmap)
    ##raster object
    r <- raster(ncol=40, nrow=20)
    r[] <- rnorm(n=ncell(r))
    # Create a RasterStack object with 3 layers
    s <- stack(x=c(r, r*2, r**2))

    ##coordinate system
    wgs<-CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
    w <- spTransform(getMap(), wgs)

    ##reading the additional shape files
    poly <- list(list("sp.lines", as(w, 'SpatialLines'), lwd = 0.5,col="black"))

    ##plotting with spplot
    p1=plot(spplot(s,layout=c(3,1),sp.layout=poly,
                 colorkey =list(space = "right"),
                names.attr = c("a","b","c"),contour = F))
plot(p1)

现在,我想在第一个绘图面板上绘制轮廓。我发现trellis.focus()包中有lattice个函数。我想在第一个图的顶部绘制火山轮廓数据。

STEP-2

    datasets::volcano
    r= raster(volcano)
    extent(r)<-c(-180,180,-90,90)

    trellis.focus("panel", column=1, row=1, clip.off=F, highlight=T)
    plot(contour(r))
    trellis.unfocus() 

但是,我收到此错误“ plot.window(...)中的错误:需要有限的'xlim'值”

所以,然后我尝试将xlim和ylim设置为

STEP-3

    trellis.focus("panel", column=1, row=1, clip.off=F, highlight=T)
    plot.window(contour(r),xlim=c(-180,180),ylim=c(-90,90))
    trellis.unfocus()

然后我得到另一个错误“ plot.window(contour(r),xlim = c(-180,180),ylim = c(-90,90))中的错误:“ log =“规范必须为字符”

有人可以帮我解决这个问题吗?

0 个答案:

没有答案