vis.js 网络拟合函数

vis.js network fit function

我正在使用 vis.js 4.16.1 绘制网络图。目前我有两个网络图。一张供用户绘制的网络图。用户完成后,我想将网络图完全复制到第二个网络图。但是,我不能设置与第一个相同的观点。这是第一个网络的选项:

options = {
    locale: 'en',
    physics: {
        "enabled": false,
    },
    edges: {
        smooth: {
            type: 'continuous'
        }
    },
    interaction: {
        navigationButtons: true,
        selectConnectedEdges: false
    }
};

我已禁用物理以允许用户自己组织节点。
这是第二个网络的选项:

var options = {
    locale: 'en',
    physics: {
        "enabled": false
    },
    edges: {
        smooth: {
            type: 'continuous'
        }
    },
    interaction: {
        dragNodes: false,
        dragView:true
    }
};

当我使用拟合函数时(http://www.cse.unsw.edu.au/~mike/myrlibrary/visNetwork/doc/network/)

var fitOption = {
    nodes: nodes.getIds() //nodes is type of vis.DataSet contains all the nodes
}
secondNetwork.fit(fitOption);

没有任何变化。 当我使用 moveTo 函数时:

var centerOptions = {
    position: {
        x: firstNetwork.getViewPosition().x, 
        y: firstNetwork.getViewPosition().y},
    }
}
secondNetwork.moveTo(centerOptions);

仍然,我无法将我的 canvas 移动到第一个网络关注的点。 canvas 根本没有动。 有人可以给我一些建议吗?提前致谢,

您可以使用network.fit(),这与右下角的上按钮一样。所以所有的节点都会被聚焦。

您可以将数据集对象用于节点和边,而不是使用

将所有节点和边复制到相同的 xy 坐标相当容易
var xy = network1.edges.get(); 
network2.edges.add(xy);

谢谢 Reiner,我已经弄清楚 fit() 和 moveTo() 函数在我的上下文中不起作用的原因,我需要设置选项:

 physics: {
     "enabled": true
 }

否则是行不通的。在我调用我的 fit() 函数之前所做的是,将 enabled 更改为 true,调用 fit() 函数,然后将 enabled 设置为 false。