2011-10-07 48 views
5

當創建具有單個節點的普通Arbor JS圖時,該節點在整個地方抖動,並且不能添加更多節點。Arbor.JS中的單節點錯誤

的問題也被其他用戶報告如下:

https://github.com/samizdatco/arbor/issues/12

很感激修復/解決辦法

+0

因爲這我已經轉移到d3.js庫[鏈接](http://mbostock.github.com/d3/),這是一個很好的選擇。 –

+0

當有更多的節點時,問題似乎也出現在其他情況下。例如,我有大約30個節點連接到一箇中央節點,並且該中央節點也開始反彈。 – user579674

回答

2

使用d3.js庫代替Arbor已解決我的問題:-)

+0

你可以重新定義重繪嗎?像你可以與喬木?我需要能夠爲我的節點使用DOM元素,而不是渲染的形狀。 = \ – NullVoxPopuli

2

這不是一個真正的解決您的幫助,但我計算節點,如果數量小於我將摩擦設置爲1.0

if (nodeCount == 1) { 
    //Stop single nodes bouncing all over the place 
    sys.parameters({ friction: '1.0' }); 
} 
+0

您究竟如何計算節點?我一直在試圖計算它們,但是我不知道如何在arbor.js文件之外完成它,因爲它似乎無法訪問節點數組。 – user579674

1

另一種選擇是用this一個替換physics.js文件。它有幾個修補程序來補償有關單個節點的問題(包括添加第二個問題的問題)。

0

試試這個

if (nodeCount == 1) { 
 
      sys.parameters({ repulsion: 10, gravity: false, dt: 0.035 }) 
 
     } 
 
     else if (nodeCount > 1 && nodeCount < 30) { 
 
      sys.parameters({ repulsion: 1000, gravity: false, dt: 0.35 }) 
 
     } 
 
     else { 
 
      sys.parameters({ friction: .1, stiffness: 0.1, repulsion: 1, gravity: false, dt: 0.035 }) 
 
     }

2

我們使用這一種變通方法解決方案。它可能比完整的解決方案更像是一種黑客攻擊,但它很容易實現,在大多數情況下工作正常。

我們所做的是,我們確定每次添加或刪除粒子時系統中粒子的數量。如果這個計數等於1,我們在系統中添加一個新的粒子,其顏色設置爲畫布背景顏色。由於節點的顏色與其背景相同,因此不可見。

所以在圖中沒有一個節點。無論何時由於添加或刪除而發生這種情況,我們都會添加這個隱藏的平衡節點。 您可以查看我們的網站以查看上述活動示例:http://www.graphthinker.com。在添加節點時,即使它只有一個(可見)節點,您也可能會看到該圖形仍然具有響應性。

當不再需要它時,例​​如當另一個節點被添加時,或者當唯一可見節點被移除時,這個隱藏的平衡節點可以被移除。