我正在尝试创建一个颜色比例尺,并在某个点处进行锐利的颜色过渡。目前我正在做的是:
test <- data.frame(x = c(1:20), y = seq(0.01, 0.2, by = 0.01))
cutoff <- 0.10
ggplot(data = test,
aes(x = as.factor(x), y = y, fill = log(y), width = 1, binwidth = 0)) +
geom_bar(stat = "identity") +
scale_fill_gradientn(colours = c("red", "red", "yellow", "green"),
values = rescale(log(c(0.01, cutoff - 0.0000000000000001, cutoff, 0.2))),
breaks = c(log(cutoff)), label = c(cutoff))
它正在生成我想要的图表。但是色条中断位置似乎因截断值而异。有时在值下方,有时在上方,有时在线上。以下是具有不同截断值(0.05、0.06、0.1)的一些图表:
![cut off at 0.05](https://istack.dev59.com/rDg5P.webp)
![cut off at 0.06](https://istack.dev59.com/ucij8.webp)
![cut off at 0.10](https://istack.dev59.com/IC47g.webp)
我做错了什么?或者,是否有更好的方法创建这样的颜色比例尺?