我正在玩这个可折叠树的例子: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;
}
}
但是没有一个节点崩溃,因为d.depth
属性是undefined
。我深入挖掘并理解(如果我错了,请纠正我)depth
属性仅在nodes
变量初始化后才被分配给节点。
var nodes = tree.nodes(root).reverse();
现在我完全卡住了。有没有办法实现这个目标?
答案 0 :(得分:0)
我找到了问题的解决方案。事实证明,在调用tree.nodes(root)
之前,节点没有父级,位置(x,y坐标)和深度属性,这会计算所有上述属性。所以我要做的就是在调用collapse
函数之前调用该函数 。之后,可以仅折叠具有一定深度的节点,这些节点仅可视化特定数量的级别。