ggmap:应用渐变比例后,将特定颜色应用于值

问题描述 投票:0回答:1

我希望能够使用渐变来填充地图上的颜色,但我需要特定的值(如零)作为特定颜色(例如,红色或灰色)。

有没有办法先应用渐变,然后设置这些特定的颜色值?如果可能的话,我希望能够为多个特定值执行此操作。

在下面的示例中,我们如何将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"

reprex package创建于2019-02-20(v0.2.1)

r ggplot2 ggmap viridis
1个回答
1
投票

您可以在绘图数据对象中将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

© www.soinside.com 2019 - 2024. All rights reserved.