代码之家  ›  专栏  ›  技术社区  ›  nganlong

使用发散颜色方案

  •  3
  • nganlong  · 技术社区  · 7 年前

    当我尝试在d3中应用发散的配色方案时,例如d3。interpolateSpectral with sequential scale,它始终返回:

    未捕获类型错误:t不是函数

    由于我编写的代码中没有“t”,我想它与 original colour scheme 如果是,我不确定这是如何应用的,因为我引用了一个示例来使用 that colour scheme 也没有“t”的地址

    以下是色阶的相关代码:

    var color=d3.scaleSequential(d3.interpolateSpectral);
    
    color.domain([d3.min(data, function(d){return d.population;}), 
                                d3.max(data, function(d){return d.population;})]);
    
    selection.style("fill", function(d){                    
        var value=d.properties.value;                   
        if(value){
            return color(value);
        } else{
            return "#ccc";
        }
    

    任何帮助都将不胜感激,谢谢!

    1 回复  |  直到 7 年前
        1
  •  3
  •   Gerardo Furtado    7 年前

    考虑到您的错误,您可能正在使用D3 v4。如果这是正确的,您必须参考scale Color mini库:

    <script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>
    

    请看一下此演示,在不参考迷你库的情况下,我们会遇到相同的错误(打开浏览器控制台查看):

    var color = d3.scaleSequential(d3.interpolateSpectral);
    
    console.log(color(1))
    <script src="https://d3js.org/d3.v4.min.js"></script>

    如果引用迷你库,则不会再看到错误:

    var color=d3。scaleSequential(d3插值特殊);
    
    安慰原木(颜色(1))
    <script src="https://d3js.org/d3.v4.min.js"></script>
    <script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>

    最后,值得一提的是,使用D3 v5,我们不必参考它:

    var color=d3。scaleSequential(d3插值特殊);
    
    安慰原木(颜色(1))
    <script src="https://d3js.org/d3.v5.min.js"></script>