javascript - 节点标签不工作 d3 v5

标签 javascript angularjs d3.js charts

我正在尝试在我的节点内添加标签,但这似乎不起作用。

//draw circles for the nodes
var node = g.append("g")
    .attr("class", "nodes")
    .selectAll("circle")
    .data(nodes_data)
    .enter()
    .append("circle")
    .attr("r", radius)
    .attr("fill", circleColour);
node.append("text")
    .attr("dx", 12)
    .attr("dy", ".35em")
    .text(function (d) { return d.name });

当我检查节点的元素时,我可以看到节点内的文本:

<circle r="15" fill="blue" style="touch-action: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);" cx="421.4930863434973" cy="221.26393165638473"><text dx="12" dy=".35em">some name</text></circle>

但它不显示在图表中。有人可以帮我吗? 这是完整的 plunkr :

最佳答案

每个定义圆只能包含动画元素和描述性元素作为内容。所以你不能将文本放在圆圈内。

解决方案是为每个节点添加多个 g 元素,然后在其内部添加圆形和文本元素。

var node = g.selectAll('.nodes')
  .data(nodes_data)
  .enter().append('g')
  .attr('class', 'nodes')

node.append('circle')
    .attr("r", radius)
    .attr("fill", circleColour)

node.append("text")
    .attr("dx", 12)
    .attr("dy", ".35em")
    .text(function (d) { return d.name });

然后打勾

node.attr('transform', d => `translate(${d.x},${d.y})`);

这是工作 fork plunkr

关于javascript - 节点标签不工作 d3 v5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49443933/

相关文章:

angularjs - 无法在 Angular typescript 中访问指令内的自定义工厂

javascript - 数组中子元素的 AngularJS 过滤器列表

javascript - D3.js 绕中点旋转轴标签

d3.js - 使用 d3.behavior.drag,如何保持拖动图像在 svg 元素外部可见

javascript - 数组中的项目推送超出了需要的数量

javascript - 自定义对象上的 addEventListener

php - 为 highcharts 实时数据添加一个额外的点

javascript - 根据其他接口(interface)的属性创建接口(interface)

java - HTTP 状态 403 - 未找到预期的 CSRF token

javascript - 是否可以将 D3.tree() 与包含 parent 而不是 child 的数据集一起使用?