d3.js - LinkText 在树布局 d3js 中不起作用

标签 d3.js svg tree data-visualization

我试图将 linkText 放在树状布局 d3js 中,但它不是 wlrking,创建了 jsfiddle 项目 here .任何人都可以让我知道,为什么 linkText 没有出现。

var link = svg.selectAll(".link")
                .data(links, function (d) {
                    return d.target.id;
            });
link.enter().insert("path", "g")
.attr("class", "link")
.attr("d", function (d) {
    var o = {
        x : source.x0,
        y : source.y0
    };
    return diagonal({
        source : o,
        target : o
    });
});

link.transition().duration(duration)
.style("stroke", function (d) {
    return "#99FFCC";
})
.attr("d", diagonal);
link.append("text")
.attr("font-family", "Arial, Helvetica, sans-serif")
.attr("fill", "Black")
.style("font", "normal 12px Arial").attr("transform", function(d) {
    return "translate(" +
        (d.target.y - 50) + "," + 
        (d.target.x - 10) + ")";
}).attr("text-anchor", "middle").text(function (d) {
alert(d.target.label);
return d.target.label;
});

最佳答案

你的错误在这里:

link.enter().insert("path", "g")
.attr("class", "link")
...
...
link.append("text")
.attr("font-family", "Arial, Helvetica, sans-serif")
.attr("fill", "Black")

这段代码会将文本放在路径 DOM 中,这是不正确的。
文本 DOM 永远不应该在路径 DOM 内。

正确的代码应该是这样的:
// Update the links…
    var link = svg.selectAll("path.link")
        .data(links);
    //adding the text to the svg
link.enter().insert("text")
        .attr("font-family", "Arial, Helvetica, sans-serif")
        .attr("fill", "Black")
        .style("font", "normal 12px Arial")
         .attr("transform", function (d) {
                return "translate(" + (d.target.y - 30) + "," + (d.target.x - 10) + ")";
            })
        .attr("text-anchor", "middle")
        .text(function (d) {
        console.log(d.target.label);
        return d.target.label;
    });

完整工作代码 here .

关于d3.js - LinkText 在树布局 d3js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822353/

相关文章:

javascript - D3 如何在曲线的某一点加针

HTML5 2d 六角棋盘游戏(桌面)引擎

javascript - Sproutcore中的SVG,使用Sproutcore访问DOM节点,将sproutcore事件绑定(bind)到DOM

model-view-controller - 如何正确自定义 Ext JS 树节点?

algorithm - 插入红黑树

reactjs - 使用带有动画的 d3-hierarchy 将节点分布在树根周围

javascript - d3 v4 X 轴刻度

css - 作为 CSS 背景的 SVG - 有没有任何方法可以在中间没有空格的情况下重复 x?

jquery - 为什么 jquery-ui 的扩展position()方法不能处理SVG元素?

algorithm - 有多个 child 的树 - 线性时间访问复杂度