7

我有一个图表,其中一些文本使用 textPath 沿着其中一条路径编写。但是,我的问题是:我需要文本位于文本路径的另一侧,即位于其下方。

这是一个例子:

目前坐在外面

我需要此处的文本位于纯蓝色区域内。即,因此您实际上可以阅读它。这里的蓝色弧线是 textPath。换句话说,我只想将文本向下移动大约 20 像素。

真正让我困惑的是,我可以在文本上设置一个“x”属性并左右移动,但我不能设置一个“y”属性来上下移动它。

我想不通。任何人都可以帮忙吗?

这是我的代码

  var labels = svg.selectAll("text.label")
      .data(partition.nodes(data))
     .enter()
      .append("text")
      .attr("class", "label")
      .attr("x", 10)
      .attr("stroke","black")
      .style("background-color",'white')

    labels.append("textPath")
      .attr("xlink:href", function(d) { return '#' + d.name })
      .text(function(d) { return d.name.capitalize() })
4

2 回答 2

18

您可以使用该dy属性来更改垂直对齐方式。

于 2013-04-27T16:50:08.193 回答
2

创建的 JS 小提琴示例在 D3 强制布局图中显示链接上的标签

请参阅 JS Fiddle 中的工作演示:http: //jsfiddle.net/bc4um7pc/

var linktext = svg.append("svg:g").selectAll("g.linklabelholder").data(force.links());

linktext.enter().append("g").attr("class", "linklabelholder")
 .append("text")
 .attr("class", "linklabel")
 .style("font-size", "13px")
 .attr("dx", "30")
 .attr("dy", "-5")
 .attr("text-anchor", "start")
 .style("fill","#000")
 .append("textPath")
 .attr("xlink:href",function(d,i) { return "#linkId_" + i;})
 .text(function(d) { 
 return d.type; 
 });
于 2014-09-12T06:35:48.553 回答