2013-05-07 90 views
4

我們想用D3繪製網絡行車路線圖已定開始和結束節點,但兩者之間可能會共享一些節點不同的路徑,例如: enter image description here網絡多路正交圖中d3.js

我讀Configure fixed-layout static graph in d3.js意見,併成功創建了一個簡單的圖形,如:

enter image description here

但正如我增加更多的節點,以圖成爲隨機的(不刷新後靜態),而不是正交了:

enter image description here

所以我的問題是:

  • 是否有可能使用d3.js吸引了接近所需 圖?
  • 還是有一個算法,我應該在我的 圖實現?
+0

看起來您在添加新節點時正在初始化部隊。這是使用強制導向佈局嗎?如果是這樣,那麼你需要刪除對force.start()或force.restart()的引用,以防止其返回到強制指示狀態。 – Elijah 2013-05-08 02:01:59

+0

是的:我正在使用武力導向佈局。你是否想要移除強制導向的佈局?如何確保節點不會在沒有斥力的情況下發生碰撞? – frank 2013-05-08 16:35:09

回答

0

Dagre解決了我們的問題。它完全符合我們的需求。

1

看到這裏我的演示。

http://jsfiddle.net/doraeimo/JEcdS/

主要的想法是讓基於一個樹狀結構連通。

//1)temporarily convert a connectivity to a tree   
    var tree = conv2tree(data); 

    //2)calculate for nodes' coords with <code>cluster.nodes(tree);</code> 
    var nodes = buildNodes(tree); 

    //3)append all the edges(links) of the connectivity 
    var links = buildLinks(data); 
+0

儘管節點systemD/E/F/G堆疊在一起。達格爾解決了我們的問題 - 它非常好地對齊節點。 – frank 2013-07-12 23:03:49

+0

不錯!我認爲很難自動對齊任何複雜的網絡圖。有一些特殊的算法嗎? – Anderson 2013-07-15 02:22:22