更改数据后d3模拟重启

时间:2017-01-14 21:44:08

标签: javascript d3.js

我的d3力模拟不起作用,因为我认为模拟没有附加到正确的节点。以下是在用户操作时更新节点上的数据的代码:

    var circles = nodes.selectAll("g")
        .selectAll("circle")
        .transition()
        .attr("r", function(d){
            newRadius = datapoints.filter(function(data){
                return data.key==d.key;
            })[0].value;
            d.value = newRadius;
            return scaleRadius(newRadius);
        })

这里的想法是我用正确的key的新值(半径)更新每个节点的数据。
现在,由于我为这些节点的数据附加了新值,我需要通过以下方式将模拟附加到这些节点:

    simulation.nodes(<array of data>)
        .on("tick",ticked)

我认为,数据数组需要附加到节点的数据上。 我试图通过以下命令获取数据:

    var circleGroups = nodes.selectAll(".circlegroup")
    var bindData = circleGroups.datum();

这是HTML的样子: enter image description here

但是bindData没有正确的价值。它只对其中一个DOM有价值,虽然circleGroups似乎有两个元素(在_groups中) 下面的第一行是circleGroups,第二行是bindData的输出。

如何将数据附加到这些节点以便我可以更新模拟对象?

提前致谢。

enter image description here

0 个答案:

没有答案