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

时间:2019-02-20 19:56:55

标签: r ggplot2 ggmap viridis

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

有什么方法可以首先应用渐变,然后设置这些特定的颜色值?如果可能,我希望能够针对多个特定值进行操作。

在下面的示例中,如何将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(v0.2.1)于2019-02-20创建

1 个答案:

答案 0 :(得分: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