ggplot: нарисуйте регионы на карте - PullRequest
0 голосов
/ 30 января 2020

Я не могу убедить 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())

US Arrests by Region for Assault / 100,000 Example Plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...