2

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

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

在下面的示例中,我们如何将 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 包(v0.2.1)于 2019 年 2 月 20 日创建

4

1 回答 1

0

您可以在绘图数据对象和使用参数中更改0为:NAscale_fill_viridisna.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")

在此处输入图像描述

于 2019-02-20T20:05:13.487 回答