Это воспроизводимый пример проблемы, с которой я сталкиваюсь. Я пытаюсь создавать карты с ggplot2 в несколько этапов. Вот проблема, с которой я сталкиваюсь.
Рассмотрим данные border
с полигонами штатов США на границе с Мексикой и border.county
с полигонами округов в этих штатах. Следующий код позволяет вам получить данные:
library(maps)
library(ggmap)
library(ggplot2)
USA <- get_googlemap(center = 'usa', zoom = 4,
style = 'administrative|element:labels|visibility:off')
us.df <- map_data("state")
border <- subset(us.df,
region %in% c("california","arizona","new mexico","texas"))
counties <- map_data("county")
border.county <- subset(counties,
region %in% c("california","arizona","new mexico","texas"))
Теперь я хочу создать карту с фоном карты из Google Maps, с полигонами штата и границами округа. Если я сделаю следующее, это будет работать аккуратно:
Allmap <- ggmap(USA) +
geom_polygon(aes(x = long, y = lat, fill = region, group = group),
data=border, color = "white") +
geom_polygon(aes(x = long, y = lat, group = group),
data=border.county, fill=NA, color="red")
Теперь, если я хотел создать эту карту в несколько этапов, я столкнулся с проблемами. Мне просто нужны границы округа для справочной информации (как своего рода «повторяющаяся тема»), и я создам несколько карт с изменяющейся информацией на уровне штата. Поэтому я создаю «фоновую карту» с графствами, которая отлично работает:
Countmap <- ggmap(USA) +
geom_polygon(aes(x = long, y = lat, group = group),
data=border.county, fill=NA, color="red")
А теперь я пытаюсь совместить это с картами состояний:
Statmap <- ggmap(USA) +
geom_polygon(aes(x = long, y = lat, fill = region, group = group),
data=border, color = "white") +
Countmap
Это дает мне ошибку:
Error: Don't know how to add o to a plot
Как я могу решить это? Я могу комбинировать карты другим способом (как в: Statmap <- Countmap + geom_polygon(aes(x = long, y = lat, fill = region, group = group), data=border, color = "white")
); однако это ставит округа под государственные границы.
Я также знаю, что у этой конкретной проблемы есть простое решение: сначала нарисовать карту с штатами, а на втором этапе объединить ее с графствами. Однако в моем реальном сценарии это не вариант, потому что текущая тема карты - это то, что нужно рисовать на втором месте: города и географические границы (например, границы моего округа здесь).
Это карта, которую я хочу создать: