D3选择<g>元素并修改填充</g>

时间:2014-04-28 11:37:41

标签: javascript d3.js

我用D3制作了美国地图并填写了颜色

var map = d3.select("#map").append("svg")
                           .attr("width", svgWidth)
                           .attr("height", svgHeight);

d3.json("us.json", function (error, us) {
    map.append("g")
    .selectAll("path")
    .data(topojson.feature(us, us.objects.states).features)
    .enter().append("path")
        .attr("d", path)
        .style("stroke", function (d) { return "#000000"; } )
        .style("fill", function (d) { return gradient(Math.random()); } )
};

现在,我想改变每个状态的颜色,而不是删除地图然后重新添加它,我想转换颜色。

我试过了:

d3.selectAll("#map").selectAll("g").selectAll("path")

但是然后尝试遍历这个数组的元素并没有帮助。

我做错了什么?

编辑: 我用来尝试更改每个状态(每个路径变量)的颜色的代码是......

d3.select(this).transition().style("fill", gradient(Math.random()));

我不相信这个问题与上面的代码有关 - 它是我试图用来选择给我带来麻烦的路径/状态的代码。

我也试过

d3.selectAll("path").attr("fill", function (d) { ... });

但是,那也没有做任何事情。 :(

1 个答案:

答案 0 :(得分:0)

正如Lars在评论中所说,因为我使用了&#34; style&#34;以前,我必须再做一次[而不是像以前一样使用attr]。

选择数据(d3.selectAll("path"))是选择状态的正确方法。