R как наложить пакет карты и geom_tile?

У меня проблемы с наложением карты (из пакета карт) на растровые данные (из ggplot2 geom_tile)?

library(ggplot2)
library(ggmap)
library(maps)
library(mapdata)

Вот мои данные

mydata = read.csv("Seasonal_Temp.csv")
head(mydata)
> head(mydata)
longitude latitude seasonalTavg_Ens
1  -111.688   40.500            3.435
2  -111.688   40.563            3.183
3  -111.688   40.625            3.488
4  -111.625   40.500            3.437
5  -111.625   40.563            3.395
6  -111.625   40.625            3.429

Вот карта

states <- map_data("state")
dim(states)
ut_df <- subset(states, region == "utah")
head(ut_df)

counties <- map_data("county")
ut_county <- subset(counties, region == "utah")
head(ut_county)

area <- subset(ut_county, subregion %in% c("summit", "wasatch", "salt lake", 
"utah"))

area_map <- ggplot(data = area, mapping = aes(x = long, y = lat, group = 
group)) + 
coord_fixed(1.3) + 
geom_polygon(color = "black", fill = "white")
area_map + theme_bw()

area_map + coord_fixed(xlim = c(-111.438, -111.688),  ylim = c(40.5, 40.625), 
ratio = 1.3) 

Я не могу объединить свои растровые данные с картой..

ggplot() + geom_raster(data = mydata, aes(longitude,latitude, fill = 
seasonalTavg_Ens)) 

Спасибо за любые идеи! Я открыт для использования geom_raster или geom_tile.

1 ответ

Когда вы создаете ggplot и сохраняете его как объект:

area_map <- ggplot(data = area, mapping = aes(x = long, y = lat, group = group)) + 
                   coord_fixed(1.3) + 
                   geom_polygon(color = "black", fill = "white")

и хотите добавить больше слоев, которые будут сохранены в том же объекте, который вы должны явно указать так

  area_map <- area_map + 
              theme_bw() +
              coord_fixed(xlim = c(-111.438, -111.688),
                          ylim = c(40.5, 40.625), atio = 1.3) 

добавить слой geom_tile:

area_map  + geom_raster(data = mydata, aes(longitude, latitude, 
                        fill = seasonalTavg_Ens), inherit.aes = F, alpha = 0.5) 

другая ключевая концепция заключается в определении inherit.aes = F в слоях, использующих определенные данные, если вы определили aes в вызове ggplot. Поскольку в большинстве случаев он не применим к слоям с конкретными данными:

результат:

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

Чтобы соответствовать легенде можно сделать

area_map  + geom_raster(data = mydata,
                        aes(longitude,latitude,
                            fill = seasonalTavg_Ens),
                        inherit.aes = F,
                        alpha = 0.5) +
  guides(fill = guide_legend(override.aes = list(alpha = 0.5)))

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

в результате легенда не выглядит непрерывной. Чтобы это исправить, нужно указать geom_path вместо geom_polygon и вообще избежать альфа-суеты:

ggplot() +
  geom_raster(data = mydata,
              aes(longitude,latitude,
                  fill = seasonalTavg_Ens)) +
  geom_path(data = area, aes(x = long, y = lat, group =  group),
               color = "black")+
  coord_fixed(xlim = c(-111.438, -111.688),  ylim = c(40.5, 40.625), 
              ratio = 1.3)+
  theme_bw()

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

Другие вопросы по тегам