R:根据图中的百分比显示颜色

R: displaying color depending on percentage in plot

我有以下情节:

p<- plot(c(0,1),c(0,1), type= "n", xlab = "", ylab = "", axes = FALSE)+
  rect(0,0,.5,.5, col = "green")+
  rect(.5,0,1,.5, col = "orange")+
  rect(0,.5,.5,1, col = "yellow")+
  rect(.5,.5,1,1, col = "red")

然而,我不想手动将颜色输入矩形,而是希望有一个函数 [0,1] -> 颜色,其中我有一个介于 0 和 1 之间的值,它根据值为框着色。例如:

 (...)
 rect(0,0,.5,.5, col = function(0.3))+
 (...)

这是创建该函数的一种方法

PercentageColour <- function(x){colorRampPalette(c('green','orange','yellow','red'))(101)[round(x*100)+1]}

p<- plot(c(0,1),c(0,1), type= "n", xlab = "", ylab = "", axes = FALSE)+
   rect(0,0,.5,.5, col = PercentageColour(0.01))+
   rect(.5,0,1,.5, col = PercentageColour(0.25))+
   rect(0,.5,.5,1, col = PercentageColour(0.356))+
   rect(.5,.5,1,1, col = PercentageColour(0.95))

其中 colorRampPalette(colours) 创建斜坡,(100) 指定斜坡中的步数,[round(x*100)] 舍入百分比输入并将其转换为索引值以供参考.

如果您不想自己制作,也可以使用一些默认的色带。例如尝试 rainbowheat.colors