我有以下功能:
function getColor(value){
//value from 0 to 1
var color = d3.scale.linear()
.domain([0, 1])
.range(colorbrewer.Greys[9]);
console.log(value + " = > " + color(value));
return color(value);
}
这使用D3中的colorbrewer.js。
但是,返回的值已关闭。
例如我得到:
1 = > #f0f0f0
和0 = > #ffffff
恰好是比例中的第一个和第二个:
["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]
如何进行插值以便根据0到1之间的值计算正确的颜色?我也尝试了序数量表,但这也没有多大帮助。
答案 0 :(得分:1)
您真正想要做的是使用quantize scales
量化标度是线性标度的变体,具有离散而非连续的范围。输入域仍然是连续的,并根据输出范围(基数)中的值的数量分成统一的段。
考虑这个plunker:
密钥是:
function getColor(value){
//value from 0 to 1
var color = d3.scale.quantize()
.domain([0, 1])
.range(colorbrewer.Greys[9]);
console.log(value + " = > " + color(value));
return color(value);
}
答案 1 :(得分:0)
数组必须包含两个或多个值,以匹配输入域的基数,否则两个中的较长者将被截断以匹配另一个。
因此,您可以只获取colorbrewer数组的第一个和最后一个值,或者为输出域提供更多与相应输出相对应的值。