我正在尝试通过ggplot2在空间图中给出一种组合的配色方案:
我发现没有比堆叠两个图更简单的方法了,上面的一个是灰色渐变以模拟饱和度:
ggplot(data = italian.regions) +
geom_sf(fill = c("#BFD6FF", "#FFEBBF")[as.numeric(as.factor(regions.lookup$`engine.top`))], lwd = .2) +
geom_sf(aes(fill = regions.lookup$`engine.diff`), lwd = .2, alpha = .3) +
scale_fill_gradient(high = "#666666", low = "#EFEFEF")
我使用整形术来填充渐变,这有效。这是一个示例图:
但是(ofc)颜色图例指的是美学,但在'engine.top'中描述离散值应该更有意义
有可能这样做吗?有没有一种更简单的方法来实现两色调的渐变配色方案而无需叠加两个图?
提前分配tnx
答案 0 :(得分:2)
我首选的方法是使用scale_fill_identity()
和hcl()
。看看这是否适合您
library(sf)
library(tidyverse)
# this file is already on your computer
nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc_colors <-
nc %>%
mutate(
# 220 = blue and # 40 = orange
hue = ifelse(str_detect(CNTY_ID, "^18"), 220, 40),
light = AREA/max(AREA)*100,
# the hcl function returns a hex code
hex = hcl(h = hue, l = light)
)
ggplot() +
geom_sf(data = nc_colors, aes(fill = hex)) +
scale_fill_identity()
您可以使用的另一种解决方案是先执行aes(...fill = hue, alpha = AREA)
之类的操作,然后再使用scale_fill_manual()