【发布时间】:2020-01-04 22:58:38
【问题描述】:
将整数数组映射到颜色范围的最佳方法是什么? 我有一个数组:
count = [ '290', '11', '8', '8', '6', '6', '3', '3', '3', '3' ]
我想映射到从 rgb(255, 0, 0) 到 rgb(255, 255, 255) 的红色阴影。
目前我只是用here的这个函数将数组中的整数映射到0-255:
const scale = (num, in_min, in_max, out_min, out_max) => {
return (num - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
var count = [ '290', '11', '8', '8', '6', '6', '3', '3', '3', '3' ]
var count_last = count[count.length - 1];
var count_first = count[0];
var new_count = []
count.forEach(function(entry) {
new_count.push(Math.round(scale(entry, count_last, count_first, 255, 0)))
})`
输出:
[ 0, 248, 251, 251, 252, 252, 255, 255, 255, 255 ]
这是可行的,但在这个例子中,值 290 将是红色的,而所有其他值几乎是白色的,所以你无法区分它们,尽管例如 11 比 3 大得多。有没有其他方法可以让我动态将整数映射到红色阴影还是我必须硬编码颜色会改变的阈值?
【问题讨论】:
标签: javascript arrays node.js mapping