#r #ggplot2
#r #ggplot2
Вопрос:
У меня есть карта с округами (показана ниже), и я пытаюсь наложить на нее прямоугольник.
Код для карты работает хорошо.
states <- map_data("state")
pa_df <- subset(states, region == "pennsylvania")
counties <- map_data("county")
pa_county <- subset(counties, region == "pennsylvania")
head(pa_county)
pa_base <- ggplot(data = pa_df, mapping = aes(x = long, y = lat, group = group))
coord_fixed(1.3)
geom_polygon(color = "black", fill = "gray")
pa_map <-print( pa_base
geom_polygon(data = pa_county, fill = NA, color = "white")
geom_polygon(color = "black", fill = NA))
pa_map
Координаты для прямоугольника:
left bottom right top
-77.04933 41.60288 -76.53023 41.24093
Я пытался использовать это, но он просто показывает карту без ничего сверху.
ggplot(pa_map)
geom_sf(xlim=-77.04933, ylim=41.60288, xmax=-76.53023, ymax=41.24093)
geom_sf(fill = NA , color = "gray50", size = 0.5)
Что я получил обратно, так это:
Ошибка:
data
должен быть фрейм данных или другой объект, вызываемый с помощьюfortify()
, а не объект S3 с классом gg / ggplot
Я не уверен, что делать. Буду признателен за помощь. Я просто хочу поместить прямоугольник на карту, учитывая координаты, которые у меня есть.
Ответ №1:
Это может быть достигнуто следующим образом. Поместите координаты, определяющие прямоугольник, в dataframe и используйте этот df, чтобы добавить еще geom_polygon
один слой к вашему графику следующим образом:
library(ggplot2)
library(usmap)
states <- map_data("state")
pa_df <- subset(states, region == "pennsylvania")
counties <- map_data("county")
pa_county <- subset(counties, region == "pennsylvania")
head(pa_county)
#> long lat group order region subregion
#> 64743 -77.44670 39.96954 2213 64743 pennsylvania adams
#> 64744 -77.42952 39.98672 2213 64744 pennsylvania adams
#> 64745 -77.37222 40.00391 2213 64745 pennsylvania adams
#> 64746 -77.32065 40.01537 2213 64746 pennsylvania adams
#> 64747 -77.23471 40.02683 2213 64747 pennsylvania adams
#> 64748 -77.18887 40.03256 2213 64748 pennsylvania adams
pa_base <- ggplot(data = pa_df, mapping = aes(x = long, y = lat, group = group))
coord_fixed(1.3)
geom_polygon(color = "black", fill = "gray")
pa_map <- pa_base
geom_polygon(data = pa_county, fill = NA, color = "white")
geom_polygon(color = "black", fill = NA)
rect <- data.frame(
x = c(-77.04933, -76.5302, -76.5302, -77.04933),
y = c(41.60288, 41.60288, 41.24093, 41.24093)
)
pa_map
geom_polygon(data = rect, aes(x, y, group = 1), fill = "red", color = "white")