vis.js网络适配功能

vis.js network fit function

本文关键字:功能 网络 js vis      更新时间:2023-09-26

我正在使用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);

尽管如此,我还是无法将画布移动到第一个网络关注的位置。画布根本没有移动。有人能给我一些建议吗?提前感谢,

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

 physics: {
     "enabled": true
 }

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

您可以使用network.fit(),这与右下角的上部按钮相同。因此,所有节点都将成为焦点。

您可以将Dataset对象用于节点和边,而不是使用将所有节点和边复制到相同的xy坐标中

var xy = network1.edges.get(); 
network2.edges.add(xy);