r - 如何在ggplot2中制作具有锐利过渡的色标

标签 r ggplot2 colors

我正在尝试创建一个在某一点具有鲜明颜色过渡的色标。我目前正在做的是:

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
cut off at 0.06
cut off at 0.10

我究竟做错了什么?或者,有没有更好的方法来创建这样的色标?

最佳答案

你看了吗scale_colour_stepsscale_colour_stepsn ?
使用选项 n.break来自 scale_colour_stepsn您应该能够指定所需的中断次数并具有更清晰的过渡。
一定要使用 ggplot2 > 3.3.2

关于r - 如何在ggplot2中制作具有锐利过渡的色标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31499186/

相关文章:

r - 如何在 R 中绘制 3D 箭头?

r - 例如,当图例位置为底部时,如何将图例标题放在标签的顶部?

r - 识别连续出现并合并两个数据帧

opencv - opencv 视频上的颜色阈值

r - r 中具有二进制输出的数据透视表

r - 在 R 中,如何为函数的参数使用 "null"默认值?

r - 如何强制多个 r 图具有相同长度的 x 刻度?

colors - 像Krita一样实现Kubelka-Munk来像油漆一样混合颜色(颜色)

java - 更改外观会更改 JTextPane 的颜色吗?

r - 访问 R : read. table.ffdf 中的大型 csv 速度变慢