[英]vis.js graph not stabilizing even after hours
我有一個大約1000個節點的網絡。 我已設置stabilize:true
和zoomExtentOnStabilize: true
。 使用vis.network.gephiParser.parseGephi()
函數從JSON
添加節點。 當我試圖繪制這張圖時,即使在讓它閑置數小時后它也永遠不會穩定下來。 但是,較少數量的節點在合理的時間內穩定下來。 我在這里想念的是什么 有沒有辦法穩定大圖。 我甚至嘗試將迭代次數設置為穩定到1000甚至更高。 在此先感謝您的幫助。
PS:JSON沒有節點的坐標。 根據用戶輸入重新繪制圖形。
編輯1:繪制的JSON數據可在http://pastebin.com/raw.php?i=Mzy4ncxw獲得 。 由於CORS
錯誤,我無法在jsbin上創建可重現的示例。
JavaScript代碼是:
message = JSON.parse(json_data); // json_data is sent from R server.
var nodes = new vis.DataSet();
var edges = new vis.DataSet();
var container = document.getElementById("div_graph");
var data = {
nodes: nodes,
edges: edges
};
var options = {
tooltip: {
delay: 50,
fontColor: "black",
fontSize: 14,
fontFace: "verdana",
color: {
border: "#666",
background: "#FFFFC6"
}
},
clustering: {
enabled: clusteringOn,
clusterEdgeThreshold: 50
},
hideEdgesOnDrag: true,
stabilize: true,
zoomExtentOnStabilize: true,
navigation: true,
keyboard: true,
edges: {
inheritColor: "to"
}
};
var network = new vis.Network(container, data, options);
nodes.clear();
edges.clear();
var parsed = vis.network.gephiParser.parseGephi(message);
nodes.add(parsed.nodes);
edges.add(parsed.edges);
network.redraw();
我是visjs網絡模塊的開發人員。 我們用它來穩定比1000個節點更大的集合。 根據您提供的信息,我無法真正說出這里出了什么問題。 我想邀請您在我們的github頁面上提出問題。 我們試圖收集那里的所有問題。 您可以共享您使用的代碼或您的數據(標簽為了匿名性而擾亂)。
如果我猜測,1000節點系統將穩定大約3000次迭代。 如果使用動態平滑曲線,則在添加支撐節點以定位曲線時,這會大大增加。 我已經為3000個節點和25000個邊緣系統使用了15000次迭代,即使這樣它也沒有完成但是我在那個時候停止了模擬。
當您說重新繪制用戶輸入時,是否在您看到拖動或縮放的意義上重新加載或重繪數據(類似於重繪功能)?
〜亞歷克斯
編輯:
根據您的數據,我遇到了一些問題。
首先,您似乎不允許節點移動但也不提供其位置,從而導致四叉樹構建過程中的無限遞歸。 我將在未來使gephiParser更加健壯。 請參閱此處了解gephi解析器的設置: http ://visjs.org/docs/network.html#Gephi_import
其次,您使用動態平滑曲線和許多互連節點。 每條平滑曲線都有一個不可見的支撐節點,有助於定位。 這會使您的系統不穩定(看看它的穩定性以查看行為)。 在v4版本中,您可以設置自己的時間步以糾正此問題,但也可以更改物理設置。 嘗試configurePhysics選項,看看是否有幫助。 您仍然可以使用靜態平滑曲線來達到美學目的。
總結一下,我可以讓你的系統在大約3000次迭代中使用靜態平滑曲線穩定,大約需要一分鍾。 我在您的選項中禁用了群集。 我建議你等待4.0版本使用群集,因為它會更加強大。
編輯2:
這是一個JSBin,顯示您的代碼和數據的工作穩定性(雖然已修改)
http://jsbin.com/tiwijixoha/5/edit?html,output
因此,如果你認為它沒有穩定,它不會隱藏自己,只顯示它准備好而不是永遠不會達到穩定狀態,那么問題是穩定只能通過setData()完成,而不是數據集更新。
在這個jsbin中,我也改變了你的邊緣並改變了物理學以使其穩定。 如果你對它不滿意,你可以多玩一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.