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