如何在d3强制有向图中最初限制节点数

时间:2016-05-16 12:52:59

标签: javascript angularjs d3.js d3-force-directed

这可能是另一个有待改进的问题,我已经在Existing question的帮助下做出了指示,该指令运作良好。

现在当用户动态创建此图表时,当数据加载超过时,浏览器会变得很重,用户界面会卡住。

当最初加载图表时,如何将节点级别限制为2。 我试图逐个拨打服务电话,但这不起作用。

以下是代码:

 function click(d) {
                    if (d3.event.defaultPrevented) return; // ignore drag
                    if (d.children) {
                        d._children = d.children;
                        d.children = null;
                    } else {
                        d.children = d._children;
                        d._children = null;
                    }
                    update();
                }

Application with Data

1 个答案:

答案 0 :(得分:2)

希望这会有所帮助。从此示例:How can I start with all the nodes collapsed in d3js?

我编辑了你的小提琴:http://jsfiddle.net/thatOneGuy/yar5sco6/7/

我删除了对update()的原始通话。因此,您必须按Load然后按Start

这会折叠所有节点。从那里你可以很容易地打开前两个层次结构:)

这是主要的实施方式:

// HTML

<button id='startForce'>START</button>

// JS

document.getElementById('startForce').addEventListener('click', function() {
            console.log('start');

            var nodes = flatten(root);
            nodes.forEach(function(d) {
              d._children = d.children;
              d.children = null;
            });
            update();
          })