在栅格地图的 gplot 上绘制矩形

Draw rectangle on gplot of raster map

我正在使用 rasterVis::gplot() 绘制由 raster 程序包创建的栅格图层。单独绘制栅格效果很好:

library(raster)
library(rasterVis)

r1 <- raster(nrow=10, ncol=10)
values(r1) <- runif(ncell(r1))

gplot(r1) +
  geom_raster(aes(fill=value))

但是当我尝试使用 geom_rect() 在绘图上添加一个矩形时,出现错误

df <- data.frame(xmin=-50, xmax=50, ymin=-50, ymax=50)
gplot(r1) +
  geom_raster(aes(fill=value)) +
  geom_rect(data=df, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax))

Error in eval(expr, envir, enclos) : object 'y' not found

我做错了什么?

geom_rect 期望早点(明确或隐含地)声明所有美学,但 df 中没有 y。使用参数 inherit.aes = FALSE 关闭此行为。

gplot(r1) +
  geom_raster(aes(fill=value)) +
  geom_rect(data=df, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), 
    inherit.aes = FALSE)

或者,使用 annotate 添加矩形。

gplot(r1) +
  geom_raster(aes(fill=value)) +
    with(df, annotate(geom = "rect", xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax))