通过迭代已绘制的对象来更新d3js对象集?

时间:2014-07-04 11:52:20

标签: svg d3.js

我有一个SVG图表,其中包含一组从对象数组中绘制的圆圈 d

  svg.selectAll(".circ").data(d)
            .enter().append("circle")
            .attr("cy", function (d) {
                return d.y
            })
            .attr("cx", function (d) {
                return d.x
            })
            .attr("r", elemSize / 2)
            .style("fill", function (d) {
                return d.color
            }).attr("class", function (d, i) {
                return "containerCell circ";
            })

我还有一个名为 状态 的数组,其中包含新的填充颜色,其大小/索引与初始 d <相同/强>

我可以使用d3js中的哪个表达式来检查已经绘制的元素并从 状态 中存储的填充颜色更新它们的填充颜色?也许我需要对已有的对象使用一些迭代方法?

1 个答案:

答案 0 :(得分:0)

找到自己的答案。

 // select all circles of interest
 var select = svg.selectAll(".circ"); 
        if (!select.empty()) { // if selection got something
            select.each(function (d, i) {
                // d is data, i is index and we can modify elements of SVG as follows:
                d3.select(this).style("fill", statusColor(states[i]));
            });
        }