我用d3库覆盖了传单地图。将显示点以及地图。但是,Colorbrewer不起作用...
它应该根据其值为地图上的点着色,相反,它们保持黑色。我可以用if value == 0.1这样的东西进行硬编码,但这不是我想要的...

多数民众赞成在我的代码中,可以看到here的citys.json结构,而colorbrewer是这个one

        ...

                    // add colorbrewer
                    var colorScale = d3.scale.quantize()
                    .domain([extent[0], extent[1]])
                    .range(colorbrewer.YlGn[n]);

                    // uses d3 data join method
                    // for each data point a "path" is created
                    var feature = g.selectAll("path")
                    .data(collection.features)
                    .enter()
                    .append("path")
                    .style("fill", function(d) {
                        colorScale(d.properties.pop_max);
                    });

        ...


任何想法出了什么问题?!
我的d.properties.pop_max中有负值。可能是问题所在吗?

最佳答案

您在return函数中缺少fill

...
...
.style("fill", function(d) {
     // add a 'return' here.
     return colorScale(d.properties.pop_max);
});


另外,由于.domain(extent)返回两个元素colorScale数组,因此您可以在初始化d3.extent时直接编写[min, max]

var colorScale = d3.scale.quantize()
                .domain(extent) // instead of .domain([extent[0], extent[1]])
                .range(colorbrewer.YlGn[n]);

关于javascript - D3中的ColorBrewer不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35178087/

10-09 18:02