我有几个网络(节点+链接)存储在单独的JSON文件中。我将它们加载到D3.js中的Force Layout中,并单独加载和布局。但是,我想添加在同一页面上加载任何文件(一次一个)的功能,并且每当从JSON文件加载新网络时,都会重新开始强制布局。D3.js:从JSON文件加载多个网络w/Force布局
如何从JSON文件加载新网络时重新启动Force Layout?我发现最近的是http://bl.ocks.org/mbostock/1093130,但只适用于单个文件。
奇怪的相关错误?
我注意到了一些关于部队布局的特殊情况。如果我每1秒钟在JSON文件之间快速切换,Force Layout会继续正确地铺设它们。如果我在切换之前等待几秒钟,那么Force Layout似乎会在第二个网络的最终布局上得到解决,然后停止布局其余的网络。
更多关于上述细节:我意识到当力布局失败,我发现了一个意外的错误:
Uncaught TypeError: Cannot call method 'call' of undefined
的错误似乎是内部D3.js,在下面几行:
d3_selectionPrototype.each = function(callback) {
return d3_selection_each(this, function(node, i, j) {
callback.call(node, node.__data__, i, j);
});
};
我执行'force.nodes(graph.nodes).links(graph.links) .start();'(其中'graph'是网络数据)每次从JSON文件加载数据后。它似乎仍然被锁定在某种东西上。 –
噢,好的。如果每次载入新数据时初始化新的'd3.layout.force()',它都能正常工作吗? – dechov
也没有骰子。尽管我刚刚意识到每次强制布局失败时都会抛出错误:未捕获的TypeError:无法调用未定义的方法'调用'。我将在原文中详细介绍上述内容。 –