我有一个图表,其中一些文本使用textPath沿其中一条路径写入。但是,我的问题是:我需要文本位于文本路径的另一侧,即位于其下方。
以下是一个例子:
我需要此处的文字位于纯蓝色区域内。即,所以你可以真正阅读它。这里的蓝色弧是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() })
答案 0 :(得分:17)
您可以使用dy
属性更改垂直对齐方式。
答案 1 :(得分:1)
创建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;
});