我用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) { ... });
但是,那也没有做任何事情。 :(
答案 0 :(得分:0)
正如Lars在评论中所说,因为我使用了" style
"以前,我必须再做一次[而不是像以前一样使用attr
]。
选择数据(d3.selectAll("path"))
是选择状态的正确方法。