Javascript d3线性色标输出错误

Javascript d3线性色标输出错误,javascript,d3.js,Javascript,D3.js,我有以下功能: 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的数据 但是,返回的值是关闭的

我有以下功能:

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的数据

但是,返回的值是关闭的

例如,我得到:

1=>#f0f0
0=>#ffffff
这两个变量恰好是量表中的第一个和第二个变量:

如何使其插值,以便它根据0和1之间的值计算正确的颜色?我也试过顺序音阶,但也没有多大帮助。

引用:

数组必须包含两个或多个值,以匹配输入域的基数,否则将截断其中较长的值以匹配另一个值


因此,您可以只获取colorbrewer数组的第一个和最后一个值,或者为输入域提供与相应输出相对应的更多值。

您真正想做的是使用

量化尺度是线性尺度的一种变体,具有离散而非连续的范围。输入域仍然是连续的,并且根据输出范围(基数)中的值的数量划分为统一的段

考虑这一点:

其中关键是:

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);
}

嗯,我就是这么想的。如何构造这样一个间隔,或者更好,有没有一种方法可以基于介于0和1之间的浮点值创建一个新的十六进制颜色代码?不知道你在问什么,但是你可以简单地用1除以值的个数来得到你的步长,然后有一个循环,在每次迭代中加上间隔来得到域。但是这就是有序的尺度,对吗?假设有两种颜色:黑色和白色以及两个值0和1。然后,在查询比例时选择黑色或什么。例如,我希望它返回0.5No的灰色,它不同于序数刻度,它仍然会为输入值进行插值,而输入值并不完全在域中。