首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据值在气泡图上设置气泡颜色。

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

Stack Overflow用户
提问于 2013-02-08 19:47:55
回答 2查看 207关注 0票数 0

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

  • 如果该值等于3,则颜色必须为"#a68500"
  • 如果该值等于,则颜色必须为"#fff79b"

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

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

任何想法都会有帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-08 20:13:55

代码语言:javascript
复制
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值。

票数 1
EN

Stack Overflow用户

发布于 2013-02-08 20:04:00

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

代码语言:javascript
复制
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,这两个值在~181处将为2.5,然后返回到十六进制来执行181.toString(16);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14780203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档