在d3树节点上设置可变宽度

时间:2017-03-05 19:44:03

标签: javascript d3.js

我正在使用d3创建一个组织结构图,其中有一些名称较长的节点。

我已设法修改较长节点的宽度,但无法正确地将孩子和线路(路径)放置到他们的孩子身上。 我尝试使用determineChildXValue()计算自己,但这不能正常工作。

有没有办法初始化具有可变宽度的树,因此它将负责子节点的翻译计算?

目前,我正在用硬编码的节点大小初始化它:

var tree = d3.layout.tree().nodeSize([70, 40]);

我已复制this example中的行为 - 展开部门,然后部门商店以查看重叠。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我咨询了一位能够建立适当解决方案的同事:

  • 定义对角线(路径)的sourcetarget属性(设置projection之前)
  • 跟踪tierDisplacementXcumulativeDisplacementX
    • 在翻译子节点及其路径的位置时使用这些

请参阅this fiddle查看工作代码。