d3 force разборный макет - стартовая страница со всеми свернутыми узлами
Мне просто нужна простая модификация макета, доступная здесь http://mbostock.github.io/d3/talk/20111116/force-collapsible.html
Приведенная выше визуализация начинается со всех узлов, которые расширяются, и поэтому пользователь может визуализировать всю иерархию. Единственная проблема заключается в том, что если график плотный, а сформированный шарик волос не имеет смысла.
Мне было бы интересно начать только с корневого узла и постепенно расширять все узлы по мере необходимости. Это возможно? Какое изменение кода необходимо?
2 ответа
Я нашел способ, который работает для этого, это вызвать функцию click на всех дочерних узлах. Вы можете сделать это, вставив следующие две строки в приведенный выше пример (вставьте эти две строки прямо под вызовом d3.json рядом с началом скрипта, который вызывает "update" в конце)
d3.json("flare.json", function(json) {
root = json;
root.fixed = true;
root.x = w / 2;
root.y = h / 2 - 80;
update();
});
//new code
var collapseMe = flatten(root);
for(var j = 0; j< collapseMe.length; j++){click(collapseMe[j])};
just do it like this
d3.json("json/results.json", function(json) {
root = json;
root.x0 = h / 2;
root.y0 = 0;
function toggleAll(d) {
if (d.children) {
d.children.forEach(toggleAll);
toggle(d);
}
}
root.children.forEach(toggleAll);
toggle(root);
update(root);
});