如何为直方图仅在设定阈值以上应用水平渐变填充?
解决方案
要实现阈值以下纯绿色、阈值以上从绿色渐变到红色的直方图填充,只需对填充映射做简单调整:将阈值以下的分箱中点值统一替换为阈值,这样它们会被映射为渐变的起始色(深绿色),而阈值以上的分箱则保留原始值以实现渐变效果。
修改后的完整代码:
library(ggplot2) # 关注阈值 loc = 0.4 set.seed(1234) mydata <- data.frame(a = rnorm(1000), b = rnorm(1000)/2) ggplot(data = mydata, aes(x = a, fill = ifelse(..x.. <= loc, loc, ..x..))) + geom_histogram() + scale_fill_gradient(low = "darkgreen", high = "red", name = "数值")
关键说明
..x..代表直方图每个分箱的中点值,我们以此为依据设置填充色ifelse(..x.. <= loc, loc, ..x..)将所有阈值以下的分箱中点值替换为loc,确保这些分箱统一使用渐变的起始色(深绿色)- 阈值以上的分箱保留原始中点值,通过
scale_fill_gradient实现从深绿色到红色的渐变,直观体现数值超出阈值的程度
内容的提问来源于stack exchange,提问作者user25342487
相关产品推荐
相关产品推荐

