Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当节点具有坐标时,Vis.js节点布局不符合预期_Javascript_Vis.js_Vis.js Network - Fatal编程技术网

Javascript 当节点具有坐标时,Vis.js节点布局不符合预期

Javascript 当节点具有坐标时,Vis.js节点布局不符合预期,javascript,vis.js,vis.js-network,Javascript,Vis.js,Vis.js Network,当节点具有指定的坐标时,我在理解vis.js网络中节点的行为时遇到一些困难。在下面的代码中,我制作了3个示例,其中示例1和示例3的行为符合预期,但示例2的行为出乎意料 在示例2中,我为节点指定了坐标,并且布局不是固定的。网络最初开启物理,然后关闭稳定物理 我希望节点的放置方式与示例1相同,但是节点应该是可拖动的,当拖动时,节点的行为应该与示例3类似。但看起来物理仍然处于打开状态,节点的放置方式与示例1不同 我看不出我做错了什么。有人能帮忙吗 var选项={ 物理:{启用:真,解算器:'排斥'}

当节点具有指定的坐标时,我在理解vis.js网络中节点的行为时遇到一些困难。在下面的代码中,我制作了3个示例,其中示例1和示例3的行为符合预期,但示例2的行为出乎意料

在示例2中,我为节点指定了坐标,并且布局不是固定的。网络最初开启物理,然后关闭稳定物理

我希望节点的放置方式与示例1相同,但是节点应该是可拖动的,当拖动时,节点的行为应该与示例3类似。但看起来物理仍然处于打开状态,节点的放置方式与示例1不同

我看不出我做错了什么。有人能帮忙吗

var选项={
物理:{启用:真,解算器:'排斥'},
边:{平滑:假},
节点:{shape:'box'},
布局:{层次:{启用:错误}
};
var arrowAttr={to:{enabled:true,键入:“triangle”};
var edges=new vis.DataSet([
{箭头:arrowAttr,从“1”到“2”,隐藏:false},
{箭头:arrowAttr,从“3”到“4”,隐藏:false},
{箭头:arrowAttr,从“1”到“4”,隐藏:false},
{箭头:arrowAttr,从“2”到“3”,隐藏:false},
]);
//例1
var nodes1=新的vis.DataSet([
{id:“1”,标签:“ex1,节点1”,x:-50,y:-50,固定:{x:true,y:true},
{id:“2”,标签:“ex1,节点2”,x:-50,y:50,固定:{x:true,y:true},
{id:“3”,标签:“ex1,节点3”,x:50,y:-50,固定:{x:true,y:true},
{id:“4”,标签:“ex1,节点4”,x:50,y:50,固定:{x:true,y:true}
]);
变量数据1={
节点:节点1,
边缘:边缘
};  
var container1=document.getElementById('network1');
var网络=新的可视网络(容器1、数据1、选项);
on(“stabilizationIterationsDone”,函数(){
network.setOptions({physics:false});
});
//例2
var nodes2=新的vis.DataSet([
{id:“1”,标签:“ex2,节点1”,x:-50,y:-50,固定:{x:false,y:false},
{id:“2”,标签:“ex2,节点2”,x:-50,y:50,固定:{x:false,y:false},
{id:“3”,标签:“ex2,节点3”,x:50,y:-50,固定:{x:false,y:false},
{id:“4”,标签:“ex2,节点4”,x:50,y:50,固定:{x:false,y:false}
]);
变量数据2={
节点:节点2,
边缘:边缘
};
options.layout.randomSeed=Math.random();
var container2=document.getElementById('network2');
var网络=新的可视网络(容器2、数据2、选项);
on(“stabilizationIterationsDone”,函数(){
network.setOptions({physics:false});
});
//例3
var nodes3=新的vis.DataSet([
{id:“1”,标签:“ex3,节点1”},
{id:“2”,标签:“ex3,节点2”},
{id:“3”,标签:“ex3,节点3”},
{id:“4”,标签:“ex3,节点4”}
]);
变量数据3={
节点:节点3,
边缘:边缘
};
options.layout.randomSeed=Math.random();
var container3=document.getElementById('network3');
var网络=新的可视网络(容器3、数据3、选项);
on(“stabilizationIterationsDone”,函数(){
network.setOptions({physics:false});
});

示例1:行为符合预期。节点固定到指定的坐标。
示例2:行为不符合预期。为什么随机布局被忽略?拖动节点时,物理并没有按预期关闭。在下一个示例3中,使用相同的代码正确地关闭了物理。
示例3:行为符合预期。节点在每次重新加载时随机分配新坐标,并且按照代码中的指定正确关闭物理。

如果目标是根据示例1初始化网络,并根据示例3移动节点,那么一个建议是简单地使用示例1代码示例,但在
稳定迭代完成
事件中,
更新
节点1
中的每个节点,以使
固定:false
。如下所示:

var选项={
物理:{启用:真,解算器:'排斥'},
边:{平滑:假},
节点:{shape:'box'},
布局:{层次:{启用:错误}
};
var arrowAttr={to:{enabled:true,键入:“triangle”};
var edges=new vis.DataSet([
{箭头:arrowAttr,从“1”到“2”,隐藏:false},
{箭头:arrowAttr,从“3”到“4”,隐藏:false},
{箭头:arrowAttr,从“1”到“4”,隐藏:false},
{箭头:arrowAttr,从“2”到“3”,隐藏:false},
]);
//例1
var nodes1=新的vis.DataSet([
{id:“1”,标签:“ex1,节点1”,x:-50,y:-50,固定:{x:true,y:true},
{id:“2”,标签:“ex1,节点2”,x:-50,y:50,固定:{x:true,y:true},
{id:“3”,标签:“ex1,节点3”,x:50,y:-50,固定:{x:true,y:true},
{id:“4”,标签:“ex1,节点4”,x:50,y:50,固定:{x:true,y:true}
]);
变量数据1={
节点:节点1,
边缘:边缘
};  
var container1=document.getElementById('network1');
var network1=新的可视网络(容器1、数据1、选项);
network1.on(“stabilizationIterationsDone”,函数(){
network1.setOptions({physics:false});
//现在更新数据集,使每个节点不再固定
节点1.forEach(函数(节点){
nodes1.update({id:node.id,修复:false});
});
});

。这很有效。谢谢!