【问题标题】:R: displaying color depending on percentage in plotR:根据绘图中的百分比显示颜色
【发布时间】:2021-06-29 06:54:46
【问题描述】:

我有以下情节:

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] -> colors,其中我的值介于 0 和 1 之间,它根据值对框进行着色。例如:

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

【问题讨论】:

  • 您可以创建一个向量mycolours &lt;- c(‘green’,’orange’,’yellow’,’red’),然后引用它mycolours[1]。您还可以使用colorRampPalette 等函数来制作渐变。
  • 感谢您的回答。我正在寻找像 colorRamp 这样的解决方案。你能给我一个 colorRampPalette 的工作示例吗?
  • 我已经为你写好了答案。

标签: r plot colors scale


【解决方案1】:

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

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 为例

【讨论】:

  • 感谢您的回答,这就是我要找的。但是是否可以创建从 0 到 1 的连续比例?
  • 我不明白你的意思,我提供的函数将接受 0-1 之间的任何值(我已经对其进行了编辑,使其现在接受 0)。它只是在该范围内创建 100 个垃圾箱。您具体在寻找什么?
  • 您的答案有效。我的印象是,例如0.2384 可以工作,但是由于该函数创建了 bin,所以它工作得很好。感谢您的宝贵时间,祝您有愉快的一天!
猜你喜欢
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
相关资源
最近更新 更多