d3:在节点旁边添加标签

时间:2016-02-29 10:56:08

标签: javascript d3.js label

我正在尝试在力布局图中的每个节点旁边添加标签。但是,所有标签都显示在屏幕的左上方。我看了很多其他类似问题的stackoverflow问题,我有信心说我尝试了不同的解决方案,但我似乎仍然有这个问题。在下图中,您可以看到堆叠在一起的所有标签。

enter image description here

以下是我初始化节点,节点和文本图像的方法:

 var node = svg.selectAll(".node")
      .data(nodes)
        .enter().append("g")
      .attr("class", "node")
    //.attr("transform", function(d){return "translate("+d.x+","+d.y+")"})
      .call(force.drag);

  node.append("image")
      .attr("xlink:href", "../icons/workstation.png")
      .attr("x", -25)
      .attr("y", -25)
      .attr("width", 50)
      .attr("height", 50);

  var text = node.append("text")
        .attr("dx", ".35em")
        .attr("dy", ".35em")
        .text(function(d){ return d.ip});

我为x&尝试了许多不同的值y和/或dx& dy但结果是一样的。 这是我的on tick方法,用于在tick上更新图形:

 force.on("tick", function() {


    link.attr("x1", function(d) { return d.source.x; })
        .attr("y1", function(d) { return d.source.y; })
        .attr("x2", function(d) { return d.target.x; })
        .attr("y2", function(d) { return d.target.y; });

    node.attr("cx", function(d) { return d.x; })
        .attr("cy", function(d) { return d.y; });

    node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });

});

0 个答案:

没有答案