Я не могу убедить ggplot
описать регионы переписи для проекта, над которым я работаю.
Я работаю над проектом, в котором мне нужно создать несколько карт США с некоторыми регионами, определенными для переписи. Я использую ggplot2
и не могу понять, как обвести регионы жирной линией.
Я бы хотел, чтобы на карте были строки состояния (которые у меня есть), но я не могу получить схему для областей, которые я определил. Я работаю на сервере и не могу установить пакет sf
для установки на сервере (т. Е. «Несовместим с версиями GDAL ниже 2.0.1»), поэтому я предпочитаю решение без geom_sf()
. Если я не могу найти решение без пакета sf
, я могу передать данные для каждого графика на мой компьютер, чтобы использовать пакет sf
(думаю, я мог бы заставить его работать, ссылаясь на этот отличный ответ ). Я также пытался адаптировать этот ответ безуспешно.
Вот пример того, что у меня работает. На этой карте трудно сказать, что северо-восточные / северные центральные регионы - это разные регионы, потому что значения очень близки. Любые решения / подталкивания в правильном направлении приветствуются !!
Данные / участок :
library(ggplot2)
library(dplyr)
# Creating a doc with regions to merge later
regions_df <- data.frame(state = state.name,
region = state.region,
stringsAsFactors = F)
# Cretaing map data with regions
state_map <- map_data("state") %>%
filter(region != "district of columbia") %>%
mutate(subregion = tools::toTitleCase(region),
region = NULL) %>%
left_join(regions_df, by = c("subregion" = "state"))
# Data for plot using USArrests data
crime_df <- datasets::USArrests %>%
tibble::rownames_to_column("state") %>%
left_join(regions_df, by = "state") %>%
group_by(region) %>%
summarise_if(is.numeric, mean)
ggplot(crime_df) +
geom_map(aes(fill = Assault, map_id = region), map = state_map, color = "grey", size = .10) +
expand_limits(x = state_map$long, y = state_map$lat) +
coord_map("polyconic") +
scale_fill_continuous(type = "gradient", low = "#56B1F7", high = "#132B43") +
theme(legend.position = "bottom",
legend.box = "horizontal",
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
panel.grid = element_blank())