在R中使用scale_color_gradientn()手动缩放颜色渐变

时间:2020-04-24 11:58:31

标签: r ggplot2

我正在尝试在R中的一行上应用三种颜色(即绿色,黑色,红色)的颜色渐变。

示例代码

# Create sample dataframe
df <- data.frame(x = seq(0, 15 , 0.001), 
                 y = seq(0, 15, 0.001))

# Plot data
ggplot(df, aes(x=x, y=y, col = y)) +
  geom_line() +
  scale_color_gradientn(colours = c("green", "black", "red"), 
                        values = rescale(x = c(0, 2, 4), to = c(0,1), from = c(0, 15) ))

enter image description here

问题

使用scale_color_gradientn()函数,我可以在行上应用颜色渐变。 我想将绿色用于0和1.5之间的值,将黑色用于1.5-2.5之间的值,将红色用于2.5及以上的值,但是我似乎无法掌握rescale()函数。在示例中,颜色停止在y值为4处。

如何以所需的方式应用颜色渐变?

1 个答案:

答案 0 :(得分:2)

由于您没有提供色标上限的值/颜色对,因此这些值被解释为NA并变为灰色。解决这个问题应该和提供上限一样容易。

library(ggplot2)
library(scales)
#> Warning: package 'scales' was built under R version 3.6.3

df <- data.frame(x = seq(0, 15 , 0.001), 
                 y = seq(0, 15, 0.001))

# Plot data
ggplot(df, aes(x=x, y=y, col = y)) +
  geom_line() +
  scale_color_gradientn(colours = c("green", "black", "red", "red"), 
                        values = rescale(x = c(0, 2, 4, 15), from = c(0, 15)))

reprex package(v0.3.0)于2020-04-24创建