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

时间:2016-06-16 22:25:45

标签: r ggplot2 r-raster

我正在使用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))

enter image description here

但是当我尝试在情节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))
  

eval(expr,envir,enclos)中的错误:找不到对象'y'

我做错了什么?

1 个答案:

答案 0 :(得分:1)

geom_rect期望先前(明确地或隐含地)声明所有美学,但y中没有df。使用参数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))