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

use*_*544 2 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) ))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题

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

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

teu*_*and 5

由于您没有提供色标上限的值/颜色对,因此这些值被解释为 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)))
Run Code Online (Sandbox Code Playgroud)

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