Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text D3、SVG和文本路径:如何向下移动文本?_Text_Svg_Path_D3.js - Fatal编程技术网

Text D3、SVG和文本路径:如何向下移动文本?

Text D3、SVG和文本路径:如何向下移动文本?,text,svg,path,d3.js,Text,Svg,Path,D3.js,我有一个图表,其中一些文本是用textPath写在其中一条路径上的。然而,我的问题是:我需要文本位于文本路径的另一侧,即位于其下方 下面是一个例子: 我需要这里的文本在纯蓝色区域内。这样你就可以读了。这里的蓝色弧线是文本路径。换句话说,我只想将文本向下移动约20px 真正让我困惑的是,我可以在文本上设置一个“x”属性并将其左右移动,但我不能设置一个“y”属性来上下移动它 我想不出来。有人能帮忙吗 这是我的密码 var labels = svg.selectAll("text.label")

我有一个图表,其中一些文本是用textPath写在其中一条路径上的。然而,我的问题是:我需要文本位于文本路径的另一侧,即位于其下方

下面是一个例子:

我需要这里的文本在纯蓝色区域内。这样你就可以读了。这里的蓝色弧线是文本路径。换句话说,我只想将文本向下移动约20px

真正让我困惑的是,我可以在文本上设置一个“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() })

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

创建了JS FIDLE示例,显示D3强制布局图中链接上的标签

请参阅JS Fiddle中的工作演示:


你试过设置一个
dy
属性吗?呸!就这样。谢谢你,拉尔斯。你应该把它作为答案贴出来,我会核对一下,这样你就能得到分数了。再次感谢
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; 
 });