【问题标题】:Add text label to d3 node in Force layout在 Force 布局中将文本标签添加到 d3 节点
【发布时间】:2016-10-05 00:49:06
【问题描述】:

这是我的代码样子,你也可以在 JsFiddle 上获得完整的代码。 我想在每个节点上都有标签,但我不能。 顺便说一句,console中的圆圈可以嵌入标签。

var nodes = svg.selectAll("circle")
                    .data(dataset.nodes)
                    .enter()
                    .append("circle")
                    .attr("r", 10)
                    .style("fill", function(d, i){
                        return colors(i);
                    })
                    .call(force.drag);
    var label = nodes.append("svg:text")
                    .text(function (d) { return d.name; })
                    .style("text-anchor", "middle")
                    .style("fill", "#555")
                    .style("font-family", "Arial")
                    .style("font-size", 12);



    force.on("tick", function(){
        edges.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; });
        nodes.attr("cx", function(d){ return d.x; })
             .attr("cy", function(d){ return d.y; });
        label.attr("x", function(d){ return d.x; })
             .attr("y", function (d) {return d.y - 10; });


    });

【问题讨论】:

    标签: javascript d3.js text label force-layout


    【解决方案1】:

    现在,您将 text 元素附加到 circle 元素,这根本行不通。

    当你写...

    var label = nodes.append("svg:text")
    

    您将文本附加到nodesselection。但是,您必须记住 nodes 是什么:

    var nodes = svg.selectAll("circle")
        .data(dataset.nodes)
        .enter()
        .append("circle")
    

    因此,您将文本附加到圆圈,这是行不通的。当您检查页面时它们会显示(如<circle><text></text></circle>),但实际上不会在 SVG 中显示任何内容。

    解决方案:改成:

    var label = svg.selectAll(null)
        .data(dataset.nodes)
        .enter()
        .append("text")
        .text(function (d) { return d.name; })
        .style("text-anchor", "middle")
        .style("fill", "#555")
        .style("font-family", "Arial")
        .style("font-size", 12);
    

    这里是小提琴:https://jsfiddle.net/gerardofurtado/7pvhxfzg/1/

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 2017-01-04
      • 2013-08-12
      • 2022-10-17
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2014-02-11
      相关资源
      最近更新 更多