Нарисуйте прямоугольник на графике растровой карты
Я использую 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))
Ошибка в eval(expr, envir, enclos): объект 'y' не найден
Что я делаю неправильно?
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))