使用带有d3js的强制布局删除节点后节点标签似乎不会更新

时间:2015-10-14 10:12:07

标签: d3.js

我的代码的重点是可视化动态的人际网络。这些数据表示人们进出网络并有联系人。

我已经结合了两个Mike Bostocks算法(强制布局和多个焦点)。

代码工作正常,但添加或删除节点时有一点问题。

似乎有些不对劲,但我无法指出是什么。

当我添加1 2 3然后删除1 2 3时,它删除(在屏幕上)3然后是2然后是1.但是如果我打印出节点它实际上删除了1 2和3。

这是我更新布局的地方:

function update(){


  link = svg.selectAll(".link")
      .data(force.links());

  link.enter().append("line")
      .attr("class", "link");
  link.exit().remove();

  node = svg.selectAll(".node")
      .data(force.nodes());

  node2 = node.enter().append("g")
      .attr("class", "node")
      .call(force.drag);

  node2.append("path")
    .style("fill", "white")//function(d, i) { return fill(d.service ); })
    .attr("stroke", function(d) { return d3.rgb(d.state & 1 ? "red" : d.state & 2 ? "orange" : "green") })
    .attr("d", d3.svg.symbol()
              .size(200)
              .type(function(d) { if
                (d.staff == 0) { return "circle"; } else if
                (d.staff == 1) { return "square";}}) 
              );          

  node2.append("text")
    .attr("fill", "black")
    .style("font-size","8px")
    .attr("text-anchor","middle")
    .text(function(d) { return d.iden });

  link.exit().remove();
  node.exit().remove();

  force.start();

}

这是我的完整项目:http://jsfiddle.net/Thomas99/vfzLnbfo/

欢迎任何帮助

谢谢。

0 个答案:

没有答案