ggmap: применить определенный цвет к значению после применения градиентной шкалы - PullRequest
0 голосов
/ 20 февраля 2019

Мне бы хотелось иметь возможность использовать градиент для заливки цветов на карте, но мне нужны конкретные значения (например, ноль) для определенного цвета (скажем, красного или серого).

Есть ли способ сначала применить градиент, а затем установить эти конкретные значения цвета?Я хотел бы иметь возможность сделать это для нескольких конкретных значений, если это возможно.

В приведенном ниже примере, как мы можем сделать 0 значений красным?

suppressPackageStartupMessages(require(tidyverse))
suppressPackageStartupMessages(require(ggmap))
suppressPackageStartupMessages(require(viridis))
suppressPackageStartupMessages(require(albersusa)) #devtools::install_github("hrbrmstr/albersusa")

us <- usa_composite()
us_map <- fortify(us, region="name") %>% 
  rename(state = id)


dat <- tibble(state = state.name, value = sample(-2:5, 50, replace = T))

dat %>% 
  right_join(us_map) %>% 
  ggplot() +
  geom_polygon(aes(x = long, y = lat, fill = value, group = group), color = "white", size = .2) +
  coord_fixed(1.3) +
  scale_fill_viridis()
#> Joining, by = "state"

Создано в 2019-02-20 пакетом представ (v0.2.1)

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете изменить 0 на NA в своем объекте данных графика и в пределах scale_fill_viridis использовать аргумент na.value:

# Create plot data object
pd <- right_join(dat, us_map)
# Replace wanted value with NA
pd$value[pd$value == 0] <- NA

ggplot(pd, aes(long, lat, fill = value, group = group)) +
    geom_polygon(color = "white", size = 0.2) +
    coord_fixed(1.3) +
    scale_fill_viridis(na.value = "red")

enter image description here

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