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

Javascript d3.js树布局需要在节点打开时展开,而不是压缩,javascript,layout,tree,d3.js,Javascript,Layout,Tree,D3.js,我使用的树布局和代码与 我把它改成了自上而下的方向。 随着每个节点的打开/扩展,其他打开的节点将进行压缩以适应SVG元素中的所有内容。有可能防止这种情况吗?我认为修改每个节点的x组件是一种方法,但没有能够做到这一点。节点会移动,但仍会压缩在一起 还想知道如何将链接线从贝塞尔曲线更改为直角/直线。也许需要一个单独的问题。压缩在树布局中是自动的(以及它的一部分)。没有办法把它关掉。但是,您可以简单地使SVG足够大,以包含整个扩展树,而无需压缩。请注意,这意味着,除非您的屏幕足够大,否则滚动条将显示,

我使用的树布局和代码与

我把它改成了自上而下的方向。 随着每个节点的打开/扩展,其他打开的节点将进行压缩以适应SVG元素中的所有内容。有可能防止这种情况吗?我认为修改每个节点的x组件是一种方法,但没有能够做到这一点。节点会移动,但仍会压缩在一起


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

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


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

谢谢Lars。我已经为SVG创建了一个更大的“画布”,然而,树形图仍然是压缩的。它似乎与根/父节点的第一级大小相同,并试图保持在其大小范围内。至于链接,我已经发现了对角线生成器,它创建了一个类似于“M 100 100 C 100 150…”的路径字符串。我确实发现,无论是否使用参数调用它,它都会产生路径,这让人感到困惑。我需要进一步研究。您还需要显式设置。哦,并且给对角线生成器的参数是隐式的,即您为
d
指定的参数实际上是一个函数。我对宽度的调整不正确-这是一个浏览器刷新问题,没有进行更改。用自定义函数替换对角线函数似乎是创建自定义链接线的方法。只要函数返回路径“M 100 L 100 150…”的字符串,它就可以工作。