2016-06-16 17 views
1

rasterパッケージで作成されたラスタレイヤをプロットするのに、rasterVis::gplot()を使用しています。ラスタマップのgplotに矩形を描画

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()をUSNGプロットに長方形を追加しようとすると、私はevalの中

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)) 

エラー(エラーが表示されます。一人でラスタをプロットすると、正常に動作しますexpr、envir、enclos):オブジェクト 'y'が見つかりません

何が間違っているのですか?

+2

geom_rectに 'inherit.aes = FALSE'を追加します。 –

答えて

1

geom_rectは、(明示的または暗黙的に)すべての審美性を以前に宣言することを期待していますが、ydfにありません。この動作をオフにするには、引数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))