D3.js 可折叠树 - 可视化设定的层数

D3.js collapsable tree - visualise set number of levels

我正在玩这个可折叠树的例子:http://bl.ocks.org/mbostock/4339083

在此示例中,最初仅可视化根及其所有子项。我想知道如何可视化设置数量的级别(例如根和两个附加级别,即根、它的子级和根子级的子级)。

我尝试修改 collapse(d) 函数,其中我指定根据其 depth 属性 折叠节点。喜欢:

function collapse(d) {
    if (d.children && d.depth > 3) {
        d._children = d.children;
        d._children.forEach(collapse);
        d.children = null;
    }
}

但是 none 个节点被折叠了,因为 d.depth 属性 是 undefined。我深入挖掘并理解(如果我错了请纠正我) depth 属性 仅在 nodes 变量初始化后才分配给节点。

var nodes = tree.nodes(root).reverse();

现在我完全卡住了。有什么办法可以实现吗?

我找到了问题的解决方案。事实证明,在调用 tree.nodes(root) 之前节点没有 parent、position(x,y 坐标)和 depth 属性,它计算了上述所有属性。所以我必须做的是在 之前调用该函数 我调用 collapse 函数。之后,可以仅折叠那些具有一定深度的节点,这些节点将仅可视化一定数量的级别。