Javascript 无法使标签在可缩放的d3 sunburst上工作

Javascript 无法使标签在可缩放的d3 sunburst上工作,javascript,d3.js,label,hierarchy,sunburst-diagram,Javascript,D3.js,Label,Hierarchy,Sunburst Diagram,在摆弄了几个小时之后,我仍然无法在我的D3 Sunburst布局中使用标签。下面是它的样子: 我在网上尝试了几种方法,下面是我尝试过的示例列表,不幸的是,我都失败了: [由于新用户限制,无法发布链接列表] 当然,还有咖啡风味轮: 此时,我用一个标题标记填充了这些片段,但当鼠标悬停在元素上时,却显示了它。为此,我使用以下代码: vis.selectAll("path") .append("title") .text(function(d) { return d.Batch; })

在摆弄了几个小时之后,我仍然无法在我的D3 Sunburst布局中使用标签。下面是它的样子:

我在网上尝试了几种方法,下面是我尝试过的示例列表,不幸的是,我都失败了:

[由于新用户限制,无法发布链接列表]

当然,还有咖啡风味轮:

此时,我用一个标题标记填充了这些片段,但当鼠标悬停在元素上时,却显示了它。为此,我使用以下代码:

 vis.selectAll("path")
   .append("title")
   .text(function(d) { return d.Batch; });
是否有类似的东西可以用来显示切片中的批号

--

更多信息:Jason Davies使用此代码选择和添加文本节点:

var text = vis.selectAll("text").data(nodes);
var textEnter = text.enter().append("text")
  .style(...)
  ...

虽然为他的控制盘选择返回97个结果(等于路径标记的数量),但我只得到一个,因此只能显示一个标签(中间的标签)

需要一些精细处理,但让您开始的关键部分是:

  var labels = vis.selectAll("text.label")
      .data(partition.nodes)
    .enter().append("text")
      .attr("class", "label")
      .style("fill", "black")
      .attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; })
      .text(function(d, i) { return d.Batch;} );
你可以看到

诀窍在于,除了确保将文本节点附加到适当的数据之外,还必须告诉它们要去哪里(带有arc计算机方便的质心功能的transform属性)

注意,我不需要vis.data([json]),因为svg元素已经附加了数据(当您附加路径时),但我仍然需要将文本选择与每个分区的节点相关联


此外,我还对文本元素进行了分类,以便它们不会与您将来可能要添加的任何其他文本元素混淆。

编辑以获取更多信息。谢谢,这绝对有帮助!