我想使用Spectral
调色板从RColorBrewer
只为面积大于0.1,但我也想显示面积小于0.1,让我们说深灰色,甚至更好的阴影。除此之外,我想将NA
渲染为浅灰色。所以基本上,没有值留在Map中;它们只能得到不同的颜色。我试过下面两种方法,但没有一种是我想要的。会很感激你的帮助。
library(ggnewscale)
library(tidyverse)
library(sf)
nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"),
quiet = TRUE)
# add some NAs
nc$AREA[c(1,2,3)] <- NA
# first try
ggplot(nc) +
geom_sf(aes(fill = AREA > 0.1)) +
new_scale_fill() +
geom_sf(aes(fill = AREA))+
scale_fill_gradientn(colors = RColorBrewer::brewer.pal(9, "Spectral"),
na.value = "grey90")
# second try
remove_col <- "AREA"
remove_val <- 0.1
nc %>%
filter(.data[[remove_col]] < remove_val) %>%
ggplot() +
geom_sf(aes(fill = AREA)) +
new_scale_fill() +
geom_sf(aes(fill = .data[[remove_col]]), color = "black") +
scale_fill_gradientn(colors = RColorBrewer::brewer.pal(9, "Spectral"),
na.value = "grey90")
字符串
1条答案
按热度按时间6bc51xsx1#
如果从图例中保留
NA
和< .1
是可以接受的,我们可以跳过ggnewscale
。首先让我们为scale_fill_gradientn()
到c(.1, NA)
设置限制,限制之外的所有内容都用na.value
填充。然后添加另一个层,只添加缺少AREA
值和常量填充的多边形:字符串
x1c 0d1x的数据
创建于2023-07-25带有reprex v2.0.2