d3线性色标输出错误

时间:2015-06-03 17:34:54

标签: 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中的colorbrewer.js

但是,返回的值已关闭。

例如我得到:

1 = > #f0f0f00 = > #ffffff恰好是比例中的第一个和第二个:

["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]

如何进行插值以便根据0到1之间的值计算正确的颜色?我也尝试了序数量表,但这也没有多大帮助。

2 个答案:

答案 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)

引用the documentation

  

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

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