关于r:n种颜色的渐变,范围从颜色1和颜色2

Gradient of n colors ranging from color 1 and color 2

我经常使用ggplot2使渐变变得很好(请单击此处查看示例)。 我需要在基础上工作,我认为scales也可以在其中使用以创建颜色渐变,但是我对如何做到这一点很不满意。 基本目标是生成n种颜色的调色板,范围从x颜色到y颜色。 该解决方案需要在基础上工作。 这是一个起点,但没有输入n的位置。

1
 scale_colour_gradientn(colours=c("red","blue"))

我很清楚:

1
brewer.pal(8,"Spectral")

来自RColorBrewer。 我在寻找更多类似于ggplot2处理渐变的方法,该方法表示我有这两种颜色,并且一路上需要15种颜色。 我怎样才能做到这一点?


colorRampPalette在这里可能是您的朋友:

1
2
3
4
colfunc <- colorRampPalette(c("black","white"))
colfunc(10)
# [1]"#000000""#1C1C1C""#383838""#555555""#717171""#8D8D8D""#AAAAAA"
# [8]"#C6C6C6""#E2E2E2""#FFFFFF"

只是为了展示它的工作原理:

1
plot(rep(1,10),col=colfunc(10),pch=19,cex=3)

enter image description here


只是为了扩展上一个答案colorRampPalette可以处理两种以上的颜色。

因此,对于更扩展的"热图"类型,您可以...

1
2
colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue"))
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)

结果图像:

enter image description here


请尝试以下操作:

1
2
3
4
5
color.gradient <- function(x, colors=c("red","yellow","green"), colsteps=100) {
  return( colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ] )
}
x <- c((1:100)^2, (100:1)^2)
plot(x,col=color.gradient(x), pch=19,cex=2)

enter image description here


上面的答案很有用,但在图形中,很难区分黑色的较深渐变。 我发现的一种替代方法是使用灰色渐变,如下所示

1
2
palette(gray.colors(10, 0.9, 0.4))
plot(rep(1,10),col=1:10,pch=19,cex=3))

有关灰度的更多信息,请点击此处。

添加

当我将上面的代码用于不同的颜色(例如蓝色和黑色)时,渐变并不那么清晰。
heat.colors()似乎更有用。

本文档包含更多详细信息和选项。 pdf格式