Я видел примеры этого в нескольких местах, в том числе в статье ggmap в журнале (https://journal.r -project.org / archive / 2013-1 / kahle-wickham.pdf )
и посмотрите это для другого прохождения - https://markhneedham.com/blog/2014/11/17/r-ggmap-overlay-shapefile-with-filled-polygon-of-regions/
Проблема, с которой я столкнулся, заключается в простой реализации этого. Это кажется прямым, но я что-то упускаю.
Я использую файл формы округов Висконсин из Висконсинского департамента природных ресурсов (бесплатно)
https://data -wi-dnr.opendata.arcgis.com / наборов данных / 8b8a0896378449538cf1138a969afbc6_3? Геометрия = -110,743% 2C42.025% 2C-68,93% 2C47.48
Вот код:
library(rgdal)
shpfile <- readOGR(dsn = "[file path to the shapefile directory]",
stringsAsFactors = FALSE )
Я могу нарисовать шейп-файл, используя plot(shpfile)
. Далее я конвертирую это в формат, подходящий для печати в ggplot. Во многих примерах используется «fortify», но, похоже, его заменили на «tidy», который является частью пакета «broom». FWIW, я попробовал это с Fortify и получить тот же результат.
library(broom)
library(ggplot2)
library(ggmap)
tidydta <- tidy(shpfile, group=group)
Теперь я могу успешно построить шейп-файл в ggplot в виде многоугольника
ggplot() +
geom_polygon(data=tidydta,
mapping=aes(y=lat , x=long, group=group),
color="dark red", alpha=.2) +
theme_void()
Далее я получаю фоновую карту, используя ggmap.
wisc <- get_map(center = c(lon= -89.75, lat=44.75), zoom=7, maptype="toner")
Проблема в том, что я не могу объединить их. Я предполагаю, что должно быть что-то не так с аккуратным преобразованием, или я пропускаю шаг. Я получаю сообщение об ошибке:
в мин (х): нет не пропущенных аргументов мин; возвращая Inf
что, как мне кажется, происходит потому, что у меня где-то есть вектор нулевой длины.
Вот команда:
ggmap(wisc) +
geom_polygon(aes(x=long, y=lat, group=group),
data=tidydta,
color="dark red", alpha=.2, size=.2)
Я успешно добавил геокодированные точки на карту, используя geom_point, но я застрял с многоугольником.
Может кто-нибудь сказать мне, что я делаю не так?