根据值在气泡图上设置气泡颜色

时间:2013-02-08 19:47:55

标签: javascript

我必须根据我在阵列上的数字设置气泡图上每个气泡的颜色。我唯一知道的是:

  • 如果值等于 3 ,则颜色必须为“#a68500”
  • 如果值等于 0 ,则颜色必须为“#fff79b”

因此,如果数组的一个元素的值为“2.5”,我必须在颜色标度中找到一个代表该数字的颜色。

我正在使用dojox.charting,但我不知道如何创建一个基于值返回颜色的函数。

任何想法都会有所帮助!!!!

2 个答案:

答案 0 :(得分:2)

所以在这里我想你会想要对数字rgb值做一些基于百分比的数学运算。如果您有rgb到十六进制函数,请使用它们,如果没有:

var r,g,b,rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(color);

if( rgb.length == 5 ) { //argb hex format
    r = parseInt(rgb[2], 16);
    g = parseInt(rgb[3], 16);
    b = parseInt(rgb[4], 16);
    }
else {
    r = parseInt(rgb[1], 16);
    g = parseInt(rgb[2], 16);
    b = parseInt(rgb[3], 16);
}

因此对于r:0是ff而3是a6,你将转换为0:255和3:166,这将把2.5放在~181 要回到Hex,可以181.toString(16);

答案 1 :(得分:1)

function getInterpolation(x, min1, max1, min2, max2) {
    return Math.round(x/(max1-min1)*(max2-min2)+min2);    
}

对每个RGB组件使用getInterpolation(2.5, 0, 3, 0xff, 0xa6);。如果在循环中经常使用它,则可以将min和max更改为某些const值。