Построение тепловой карты с помощью geom_raster в ggmap

У меня есть фрейм данных, содержащий долготу, широту и переменную интенсивности (var1.pred).

мой фрейм данных

Я хотел бы построить гладкий контурный контур на карте ggmap. Я сделал это, используя график geom_tile, но он не выглядит гладким. Я уменьшил размеры плитки, но участок занимает много места. Что я хочу сделать, так это использовать geom_raster, чтобы построить хороший чистый контурный контур поверх объекта карты. Используя приведенный ниже код, я сделал это с помощью ggplot:

raster <- ggplot(idw.output, aes(x = lon, y = lat, z = var1.pred))+
geom_raster(aes(fill = var1.pred), alpha = 0.5) +
scale_fill_gradient(low = "white", high = "blue")+
geom_contour(colour = "white", binwidth = 1) +
labs(fill = "Frequency", title = "Frequency per area", x = 'Longitude', y = 'Latitude') 
raster  

Это возвращает сюжет: введите описание изображения здесь

Однако я не могу понять, как совместить это с объектом ggmap. Я пробовал разные вещи, такие как:

ggmap(fr) + #fr is a map from get_map
ggplot(idw.output, aes(x = lon, y = lat, z = var1.pred))+
geom_raster(aes(fill = var1.pred), alpha = 0.5) +
scale_fill_gradient(low = "white", high = "blue")+
geom_contour(colour = "white", binwidth = 1) +
labs(fill = "Frequency", title = "Frequency per area", x = 'Longitude', y = 'Latitude')

Но я получаю ошибку:

Ошибка: не знаю, как добавить o в сюжет

Я знаю, что проблема связана с объединением объектов ggplot и ggmap, но я не могу понять, как заставить его работать. Любая помощь будет оценена.

Спасибо,

Робин

1 ответ

Решение

Без воспроизводимого примера невозможно протестировать ваш код, но вполне вероятно, что вы можете переместить ggplot позвонить в base_layer аргумент, так что вы можете продолжать добавлять geoms.

ggmap(fr, base_layer = ggplot(idw.output, aes(x = lon, y = lat, z = var1.pred))) + 
    geom_raster(aes(fill = var1.pred), alpha = 0.5) +
    scale_fill_gradient(low = "white", high = "blue")+
    geom_contour(colour = "white", binwidth = 1) +
    labs(fill = "Frequency", title = "Frequency per area", x = 'Longitude', y = 'Latitude')
Другие вопросы по тегам