sf map добавить недостающие значения с помощью inter_join - PullRequest
0 голосов
/ 10 июля 2019

У меня есть технический вопрос к вам, пожалуйста.

    read_sf("map.shp")  %>% mutate(Groups = as.factor(Groups)) %>% 
        mutate(Groups = factor(Groups, levels = c(paste0(1:23)))) %>%
        left_join(data, by = "cities_code") %>%
# Show map with cities border
      ggplot() +
        geom_sf(aes(fill = Groups),  size = 0.4) +
# Color the different Groups, here 23 colors
        stat_sf_coordinates(aes(size = observation)) +
# Put point with the size of my number of observations
        scale_radius(range = c(1, 6)) +
        geom_sf(fill = "transparent", color = "gray20", size = 1, data = . %>% group_by(Groups) %>% summarise()) +
# Show the border of my Groups
        theme_bw()

Эта карта представляет собой именно то, что я хочу. Он представляет города одного государства, подразделяемого на районы («Группы»). Но между моим map.shp и моим data у меня разница в 50 городов, потому что в этих городах нет наблюдения (поэтому нет точки "stat_sf_coordinates(aes(size = observation))").

Я могу найти разницу с anti_join(data, by = "cities_code"). Я хотел бы иметь ту же карту, но с красным цветом недостающие города, пожалуйста, пожалуйста.

Спасибо

1 Ответ

0 голосов
/ 11 июля 2019

Это было просто:

        read_sf("map.shp")  %>% mutate(Groups = as.factor(Groups)) %>% 
            mutate(Groups = factor(Groups, levels = c(paste0(1:23)))) %>%
            left_join(data, by = "cities_code") %>%
          ggplot() +
            geom_sf(aes(fill = Groups),  size = 0.4) +
            stat_sf_coordinates(aes(size = observation)) +
            scale_radius(range = c(1, 6)) +
##

geom_sf(fill = "red", color = "gray40", size = 0.4, data = . %>% anti_join(data, by = "cities_code")) +

##
            geom_sf(fill = "transparent", color = "gray20", size = 1, data = . %>% group_by(Groups) %>% summarise()) +
            theme_bw()
...