我希望能够使用渐变来填充地图上的颜色,但是我需要特定的值(例如零)才能成为特定的颜色(例如红色或灰色)。
有什么方法可以首先应用渐变,然后设置这些特定的颜色值?如果可能,我希望能够针对多个特定值进行操作。
在下面的示例中,如何将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创建
答案 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")