Javascript D3 force布局中未显示为标签的文本

Javascript D3 force布局中未显示为标签的文本,javascript,d3.js,Javascript,D3.js,我试图在D3Force布局中为节点添加标签,但似乎存在一些问题。所有文本都显示在屏幕顶部,相互重叠。以下是代码片段: var link = g.append("g") .attr("class", "links") .selectAll("line") .data(graph.links) .enter().append("line"); var node = g.append("g") .attr("class", "nodes") .sele

我试图在D3Force布局中为节点添加标签,但似乎存在一些问题。所有文本都显示在屏幕顶部,相互重叠。以下是代码片段:

var link = g.append("g")
    .attr("class", "links")
    .selectAll("line")
    .data(graph.links)
    .enter().append("line");

var node = g.append("g")
    .attr("class", "nodes")
    .selectAll("circle")
    .data(graph.nodes)
    .enter().append("circle")
    .attr("r", 2.5)
    .on('click', clicked);

var text = g.append("g")
    .attr("class", "labels")
    .selectAll("text")
    .data(graph.nodes)
    .enter().append("text")
    .attr("dx", 12)
    .attr("dy", ".35em")
    .text(function(d) { return d.name });

元素堆积在SVG的左上角(即原点)是几个问题的征兆,其中包括:

  • NaN
    用于职位
  • 不设置位置
  • 不翻译元素
  • 不包括
    勾选功能中的元素
因为你有一个力方向图,最后一个是显而易见的原因

解决方案:您必须在勾选的
函数中包含
文本

function ticked() {
    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; });

    text.attr("x", function(d) { return d.x; })
        .attr("y", function(d) { return d.y; });
}