使用vis.js绘制大树

时间:2018-06-29 16:11:53

标签: javascript charts vis.js vis.js-network

我正在尝试使用vis.js 4.21.0绘制一个相当大的network(即〜1k节点和〜1k边缘)。这是我的选项对象:

var options = {
    autoResize: true,
    height: '400px',
    clickToUse: false,
    layout: {
        hierarchical: {
            direction: 'UD',
            sortMethod: 'directed',
        }
    },
    physics: {
       stabilization: false,
       barnesHut: {
            gravitationalConstant: -80000,
            springConstant: 0.001,
            springLength: 200
       }
    },
    nodes: {
        shape: 'dot',
        size: 20,
        font: {
            size: 15,
            color: '#ffffff'
        },
        borderWidth: 2
    },
    groups: groups,
 };

问题在于,渲染最多需要4分钟的时间(请参阅此simplified JSFiddle)。在this example(比矿井大得多)中,网络几乎是即时呈现的。

如何加快图表的渲染过程?

1 个答案:

答案 0 :(得分:2)

等等,您的小提琴没有您在帖子中提到的所有选项。例如,几分钟后根本不会显示网络,但是如果您添加physics: { stabilization: false },则会立即显示该网络(尽管此时它不是静态的并且会慢慢放松)。此外,将barnesHut: { ... }添加到physics并调整springConstant会改变松弛速度。

但这是一个棘手的部分:比较您与vis.js 4.21.0所拥有的未松弛树(与stabilization: false)和您与get所拥有的未松弛树与4.19.1!看起来好多了:

enter image description here

比这个烂摊子

enter image description here

这是reported earlier,可能值得更多挖掘,但是我可以肯定地说的是4.19.1使初始树变得更漂亮,甚至在放松之前也能看到东西。使用此版本,您甚至可以转到physcis: false并获取此信息:

enter image description here

我会考虑使用这种方法,尽管它有缺点:

enter image description here

具有物理性质的版本在某种程度上也遭受了痛苦,所以...