【问题标题】:Adding new nodes to a clustered force layout将新节点添加到集群力布局
【发布时间】:2014-03-28 12:29:24
【问题描述】:

使用clustered nodes 的 Mike Bostock 示例,我正在尝试创建一种将新节点推送到羊群的方法。

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 和 y 使用随机值。

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

【问题讨论】:

    标签: d3.js force-layout


    【解决方案1】:

    你快到了,只是一些小事:

    • 您在更新功能中通过“circle.node”进行选择,但尚未将“node”类分配给初始圆圈。
    • 您正在使用d.size 设置新圆的半径,但不要设置d.size,而是设置d.radius
    • 您在.data() 之后立即调用.style(...) 并将结果保存为新选择。这会打乱进入和退出选择。

    最后,您没有在小提琴中包含 JQuery,因此该按钮不起作用。示例将所有这些问题修复here

    【讨论】:

    • 感谢您扫清道路,Lars。我全都错了。我将记录这一点并为像我这样的未来新手更新小提琴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2016-01-06
    • 2015-09-08
    相关资源
    最近更新 更多