【问题标题】:R: Create a color vector for specific values from a rangeR:为范围内的特定值创建颜色向量
【发布时间】:2018-06-06 19:36:47
【问题描述】:

我想创建一个颜色向量,然后将其应用于条形图。我创建了一个颜色范围:

color.function <- colorRampPalette(c("blue", "white", "red"))

然后我想获取某个范围内包含的特定值的特定颜色。例如,假设我希望颜色范围跨越 -10 到 10。然后我想获取 -7、-4.5 和 2 的颜色(例如)。

我怎么能这样做?我试过这个:

col.seq <- seq(-10, 10, 0.1) 
cuts <- cut(c(-7,-4.5,2), breaks = length(col.seq)) 
colors <- colorRampPalette(c("blue", "white", "red"))(length(col.seq)) 
levels(colors) <- cuts 
colors

但它似乎只是在我的调色板上每次中断提供一种颜色。

感谢任何帮助!

【问题讨论】:

  • 您可以使用cut 创建群组
  • 能否详细说明?
  • 你试过了吗?如果是,您能否编辑您的问题以显示代码及其存在的问题(它与预期输出有何不同,或它给出的错误消息)?
  • 我已经添加了我尝试过的,但我认为这里有一些我不明白的地方
  • 我从来没有用过“cut”

标签: r


【解决方案1】:

要为您的数值获得正确的颜色,您需要在开始的序列向量中找到它的 idex。

你可以通过四舍五入和which

color.function <- colorRampPalette(c("blue", "white", "red"))

col.seq <- round(seq(-10, 10, 0.1), 1)
colors <- colorRampPalette(c("blue", "white", "red"))(length(col.seq)) 

x <- 6.5323
x.map <- round(x, 1)
x.index <- which(col.seq == x.map)
colors[x.index]
# [1] "#FF5959" 

x <- 1.7323
x.map <- round(x, 1)
x.index <- which(col.seq == x.map)
colors[x.index]
# [1] "#FFD3D3"

【讨论】:

  • 谢谢,我能够修改您的解决方案以适应“x”值的向量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
相关资源
最近更新 更多