2013-09-26 40 views
0

我使用的是树的布局和类似的代码http://mbostock.github.io/d3/talk/20111018/tree.htmld3.js树布局需要扩大为节点开放,不压缩

我修改它自上而下的方向。 随着每个节点的打开/展开,其他开放节点将进行压缩以适应SVG元素中的所有内容。有没有可能阻止这种情况?我认为修改每个节点的x部分将是方法,但一直未能实现。节点移过来,但仍然压缩在一起。

也想知道如何改变连接线从bezier到直角/直线。也许需要一个单独的问题。

回答

0

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

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

+0

谢谢拉斯。我为SVG创建了一个更大的“画布”,但树图仍然压缩。它似乎取自根/父节点下一级的大小,并试图保持其大小。至于链接,我发现了对角线生成器,并且看到它创建了一个类似于“M 100 100 C 100 150 ....”的路径字符串。我发现它令人困惑,它可以使用或不使用参数进行调用,并仍然产生一条路径。我需要更多地研究它。 –

+0

您还需要明确设置[树形布局的大小](https://github.com/mbostock/d3/wiki/Tree-Layout#wiki-size)。 –

+0

哦并且给出的对角线生成器的参数是隐含的,即您为'd'指定的参数实际上是一个函数。 –