d3.js树布局需要在节点打开时展开,而不是压缩

时间:2013-09-26 19:14:23

标签: javascript layout tree d3.js

我正在使用类似于http://mbostock.github.io/d3/talk/20111018/tree.html

的树形布局和代码

我将其修改为自上而下的方向。 在打开/展开每个节点时,其他打开的节点会压缩以适应SVG元素中的所有内容。是否有可能阻止这种情况?我认为修改每个节点的x组件将是方法,但无法实现这一点。节点移过,但仍然被压缩在一起。

还想知道如何将连接线从贝塞尔角更改为直角线/直线。也许需要一个单独的问题。

1 个答案:

答案 0 :(得分:0)

压缩在树形布局(及其部分点)中是自动的。没有办法把它关掉。但是,您可以简单地使SVG足够大,以包含整个展开的树而不进行压缩。请注意,这意味着除非您的屏幕足够大,否则即使所有可见的内容都适合屏幕,也会显示滚动条。

使用示例中的diagonal line generator生成连接节点的链接。原则上,您可以将其替换为任何其他线生成器(例如d3.svg.line),但实际上需要进行一些更改,因为对角线生成器以特殊方式访问源节点和目标节点。对于法线生成器,您需要将此结构转换为双元素数组,并为每个元素指定如何访问x / y坐标。然后,您可以使用任何插值来获得所需的曲线。