How to place text on the circle when using D3.js force layout?

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-29 14:21:27

SVG does not allow a text element inside an circle element. You should put the circle and the text element inside a common g. Try something like this (not tested):

  var node = svg.selectAll(".node")
      .data(graph.nodes).enter().append('g').classed('node', true);

  node.append("circle")
      .attr("r", function(d) {return d.r;})
      .style("fill", function(d) { return color(d.group); })
      .append("title")
      .text(function(d) { return d.name; });

  node.append("text")
       .text("A");

And then instead of setting cx and cy on nodes, set the transform property on the g.node:

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

    node.attr("transform", function(d) { return 'translate(' + [d.x, d.y] + ')'; })
  });
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!