javascript - d3树节点位置

标签 javascript svg d3.js

如何定位具有可变尺寸的 d3 树形图的节点?

这是我目前所拥有的,正如你所看到的那样,定位有偏差

http://jsfiddle.net/cdad0jyz/1/

我试过用分离法:

var tree = d3.layout.tree()
        .nodeSize([10,10])
         .separation(function(a, b) {
               var width = 200, // here should be a value calculated for each node
                   distance = width / 2 + 16; 
                   return distance;
           });

最佳答案

在您的代码中,您在 text 元素上设置了 xy,但没有在相应的 rects 上设置.更复杂的是,每个矩形都有随机的宽度和高度,这使得它很难在文本上居中。

这是解决它的一种方法:

nodeEnter.append("rect")
    .attr("width",  genRand)  //rectW
    .attr("height", genRand) // rectH
    .attr("x", function(){
        return (rectW / 2) - (d3.select(this).attr('width') / 2);
    })
    .attr("y", function(){
        return (rectH / 2) - (d3.select(this).attr('height') / 2);
    })
    .attr("stroke", "black")
    .attr("stroke-width", 1)
    .style("fill", function (d) {
    return d._children ? "lightsteelblue" : "#fff";
});

已更新 fiddle .

关于javascript - d3树节点位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28742899/

相关文章:

javascript - Jquery Deferred.resolve不传递参数

html - 在 SVG(转换器)图像周围放置边框

d3.js - 带间隙的路径转换 - 怎么做?

javascript - 更新链接形状时在 Safari 中使用中断的 SVG clipPath

javascript - d3 v4 为什么我无法使 x 轴和条形对齐?

javascript - 如何让 ASP.NET MVC 包管理器呈现 type = "module"属性的脚本标记?

javascript - 编译失败,在 webpack 上引导

Javascript:函数不激活 onClick

javascript - 使用 d3.js 就地旋转 svg

unity3d - 如何将 SVG 导入 Unity 2018.2