0
每當我使用分層佈局佈局節點時,只能在x軸上移動它們。我希望節點能夠在各個方向上移動。如何使節點在visjs中的分層佈局中的y軸上移動?
每當我使用分層佈局佈局節點時,只能在x軸上移動它們。我希望節點能夠在各個方向上移動。如何使節點在visjs中的分層佈局中的y軸上移動?
您可以輕鬆實現。
const options = {
nodes: { borderWidth: 2 },
edges: {length: 300, smooth: false },
physics: {
enabled: false
},
layout:{
improvedLayout: true,
hierarchical: {
levelSeparation:200,
nodeSpacing: 200,
treeSpacing:200,
}
},
interaction: { hover: true }
}
const network = new vis.Network(container, visData, options);
setTimeout(()=>{
network.setOptions({
layout:{
hierarchical: false
},
});
},1000);
另一種替代方法是在圖表呈現一次後關閉分層佈局,然後停止任何進一步的模擬。
var network = new vis.Network(container, data, options);
network.on("stabilized", function() {
network.stopSimulation();
network.setOptions({
"layout": {"hierarchical": {"enabled": false}},
});
});
var hasDrawnOnce = false;
network.on("startStabilizing", function() {
if(hasDrawnOnce!=false){
network.stopSimulation();
}
hasDrawnOnce=true;
});
如果您可以在兩個軸上移動它們,它將不再是分層佈局。如果你不想約束一個軸,你應該使用默認的佈局。 – bhspencer
感謝您的評論。我想按照層次順序(或佈局,如果你想要)顯示圖形,但是在佈局(以及穩定等)之後,能夠隨節點向各個方向移動(給用戶以後自由操作)。 – lukasinko
我相信可以在加載網絡時明確指定每個節點的初始位置。我可以想象一個解決方案,您可以在分層模式下創建網絡,然後一旦以編程方式解決了每個節點的x,y位置,然後使用您之前計算的顯式位置以標準模式重新加載網絡。 – bhspencer