将新节点添加到群集强制布局

时间:2014-03-28 12:29:25

标签: d3.js force-layout

使用clustered nodes的Mike Bostock示例,我试图创建一种将新节点推送到flock的方法。

function addNode(){
  nodes.push({
    cluster: 2,
    radius: 5,
    x: Math.cos(3 / 4 * 2 * Math.PI) * 200 + width / 2 + Math.random(),
    y: Math.sin(5 / 4 * 2 * Math.PI) * 200 + height / 2 + Math.random()
  });
  console.log(nodes);
  update();
}

$('button').click(function(){
  addNode();
})

我使用相同的簇和半径值创建新节点,但使用x和amp;的随机值。收率

这是fiddle,但它没有按预期工作。

1 个答案:

答案 0 :(得分:2)

你几乎就在那里,它只是一些小事:

  • 您可以通过" circle.node"在更新功能中,但您尚未分配"节点"分类到初始圈子。
  • 您正在使用d.size设置新圈子的半径,但不要设置d.size,而是d.radius
  • 您在.style(...)之后立即呼叫.data()并将结果保存为新选择。这会混淆进入和退出选择。

最后,你没有把JQuery包含在你的小提琴中,所以按钮不起作用。示例将解决所有这些问题here