Дискретные значения в легенде карты США с использованием plot_usmap

Я рисую группу "лечебных" округов, используя usmap::plot_usmap(), таким образом, что лечение =1 для идентифицированных округов и 0 в противном случае. Я хотел бы, чтобы легенда отражала тот факт, что переменная дискретна (0/1), а не показывала непрерывную шкалу цветов? В моем наборе данных есть 2 переменные: fips и treatment.

Мой код:

library(usmap)
library(ggplot2)

  plot_usmap(regions = "county", data=data, values = "treatment",color="grey")+ 
  theme(panel.background = element_rect(colour = "black"))+
  scale_fill_gradient(low = "white", high = "blue",name = "treatment",
                      breaks=c(0,1), limits = c(0, 1)) + 
  theme(legend.position = "right") 

Выходной график:

1 ответ

Решение

Вы должны преобразовать лечение в factor или character. Затем цвета можно установить с помощьюscale_fill_manual. Используя случайный примерdata попробуй это:

library(usmap)
library(ggplot2)
library(dplyr)

# example data
set.seed(42)
data <- utils::read.csv(system.file("extdata", "county_fips.csv", 
                                  package = "usmap")) %>% 
  select(fips) %>% 
  mutate(treatment = sample(c(0, 1), nrow(.), replace = TRUE))

# Convert treatment to factor
data <- mutate(data, treatment = factor(treatment))

plot_usmap(regions = "county", data=data, values = "treatment",color="grey")+ 
  theme(panel.background = element_rect(colour = "black")) +
  scale_fill_manual(values = c(`0` = "white", `1` = "blue"), name = "treatment") + 
  theme(legend.position = "right")

Создано 2020-04-20 пакетом REPEX (v0.3.0)

Другие вопросы по тегам