gpt4 book ai didi

r - 如何更改/指定超出渐变条限制的填充颜色?

转载 作者:行者123 更新时间:2023-12-04 14:45:55 27 4
gpt4 key购买 nike

在ggplot2/geom_tile中,如何更改超出限制的填充颜色?
如图,Region_4/5 出limis(1,11) ,所以填充颜色默认为灰色,如何将 'Region_4' 更改为 'darkblue',将 'Region_5' 更改为 'black' 。谢谢!

library(tidyverse)
library(RColorBrewer)
tile_data <- data.frame(category=letters[1:5],
region=paste0('region_',1:5),
sales=c(1,2,5,0.1,300))


tile_data %>% ggplot(aes(x=category,
y=region,
fill=sales))+
geom_tile()+
scale_fill_gradientn(limits=c(1,11),
colors=brewer.pal(12,'Spectral'))+
theme_minimal()
enter image description here

最佳答案

如果您想保持梯度比例并为上下限设置两个额外的离散值,我认为最简单的方法是为“限制内”和“限制外”值设置单独的填充比例。这可以通过在数据子集上单独调用 geom_tile 以及使用诸如 {ggnewscale} 之类的包来完成。
我认为将离散的“禁区”放在渐变颜色条的各个极端是有意义的。那么你需要三个 geom_tile来电三scale_fill调用,您需要在每个 scale_fill 中指定指南顺序称呼。然后,您将需要处理图例边距,但让它看起来没问题并不是什么大问题。

library(tidyverse)
library(RColorBrewer)
tile_data <- data.frame(
category = letters[1:5],
region = paste0("region_", 1:5),
sales = c(1, 2, 5, 0.1, 300)
)


ggplot(tile_data, aes(
x = category,
y = region,
fill = sales
)) +
geom_tile(data = filter(tile_data, sales <= 11 & sales >=1)) +
scale_fill_gradientn(NULL,
limits = c(1, 11),
colors = brewer.pal(11, "Spectral"),
guide = guide_colorbar(order = 2)
) +
ggnewscale::new_scale_fill() +
geom_tile(data = filter(tile_data, sales > 11), mapping = aes(fill = sales > 11)) +
scale_fill_manual("Sales", values = "black", labels = "> 11", guide = guide_legend(order = 1)) +
ggnewscale::new_scale_fill() +
geom_tile(data = filter(tile_data, sales < 1), mapping = aes(fill = sales < 1)) +
scale_fill_manual(NULL, values = "darkblue", labels = "< 1", guide = guide_legend(order = 3)) +
theme_minimal() +
theme(legend.spacing.y = unit(-6, "pt"),
legend.title = element_text(margin = margin(b = 10)))

创建于 2021-11-22 由 reprex package (v2.0.1)

关于r - 如何更改/指定超出渐变条限制的填充颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70060267/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com