Javascript 更改数据后重新启动d3模拟
我的d3力模拟不起作用,因为我认为模拟没有连接到正确的节点。以下是根据用户操作更新节点上数据的代码:Javascript 更改数据后重新启动d3模拟,javascript,d3.js,Javascript,D3.js,我的d3力模拟不起作用,因为我认为模拟没有连接到正确的节点。以下是根据用户操作更新节点上数据的代码: var circles = nodes.selectAll("g") .selectAll("circle") .transition() .attr("r", function(d){ newRadius = datapoints.filter(function(data){ ret
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);
})
这里的想法是,我用正确的键的新值(半径)更新每个节点的数据
现在,由于我已将新值附加到这些节点的数据,我需要通过以下方式将模拟附加到这些节点:
simulation.nodes(<array of data>)
.on("tick",ticked)
以下是HTML的外观:
但是bindData
没有正确的值。它只有一个DOM的值,尽管circlegroup
似乎有两个元素(在_组中)
下面的第一行是circlegroup
,第二行是bindData
的输出
如何获取附加到这些节点的数据,以便更新模拟对象
提前谢谢
你找到解决办法了吗?时间太长了,所以我忘记了具体步骤,但我解决了。我相信我再次将正确的节点绑定到模拟,然后运行模拟。好的,我将尝试一下,谢谢
var circleGroups = nodes.selectAll(".circlegroup")
var bindData = circleGroups.datum();