我的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();
但是bindData
没有正确的价值。它只对其中一个DOM有价值,虽然circleGroups
似乎有两个元素(在_groups中)
下面的第一行是circleGroups
,第二行是bindData
的输出。
如何将数据附加到这些节点以便我可以更新模拟对象?
提前致谢。