2015-06-07 5 views
0

Я играл с этим примером складного дерева: http://bl.ocks.org/mbostock/4339083D3.js разборного дерево - визуализировать заданное количество уровней

В этом примере сначала только корень и все его дочерних визуализируется. Мне было интересно, как можно визуализировать заданное количество уровней (например, корень и два дополнительных уровня, что означает корень, его дети и дети детей с корнями).

Я пробовал модифицировать функцию 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

Я нашел решение своего вопроса. Оказывается, что узлы не имеют родительского, координаты положения (x, y) и атрибутов глубины до tree.nodes(root), который вычисляет все вышеупомянутые атрибуты. Так что я должен был сделать эту функцию до Я звоню collapse функции. После этого можно свернуть только те узлы, которые имеют определенную глубину, которые будут визуализировать только определенное количество уровней.