2013-04-09 87 views
1

有沒有什麼方法可以指定力有向圖中節點/邊之間的最小距離?指定infoVis JIT圖中節點之間的最小距離

我有一些圖,其中一個節點直接連接到數百個其他節點,在這種情況下,由於邊和節點非常接近以至於onMouseEnter,onClick等事件是非常困難的,因此選擇特定的邊或節點非常困難沒有按照用戶期望的方式解僱。

例如如果nodeA和nodeB非常接近,當我將nodeA懸停並期望突出顯示時,nodeB會突出顯示nodeB,因爲nodeB會觸發事件。邊緣彼此靠得太近時也是如此。基本上,真正讓用戶很難理解哪個節點/邊緣正在被徘徊或被選中。

我知道我們可以指定邊的長度。這可以在一定程度上解決這個問題,但是當你有數百個節點和邊時,這並沒有幫助。而且我無法將邊緣長度設置爲高於畫布的高度。

如果我們可以指定節點/邊之間的最小距離,那將是非常有用的。

有誰知道該怎麼辦?

+0

請說明如何定義和渲染圖。否則它是非常猜測。 – kaiser 2013-04-09 15:12:26

回答

1

作爲InfoVis/TheJit API Documentation,有.eachNode()函數,它允許您遍歷所有節點並檢索其數據。

$jit.Graph.Util.eachNode(graph, function(node) { 
    console.log(node); 
}); 
// or: 
graph.eachNode(function(node) { 
    console.log(node); 
}); 

由於我沒有跟InfoVis/TheJit了一年多工作了,目前有沒有計劃成立,我不知道你是否能與Graph.Node.getPos()檢索位置。無論如何,如果你想到這一步,你必須寫一個對象/數組/矩陣來保存位置。如果某個el接近另一個el,則使用Graph.Node.setPos()重新定位它。

+0

這是個好主意。可能是我會嘗試一下。但我正在從infovis API尋找可以做到這一點的東西。我不希望自己進入設置節點的位置。 – 2013-04-11 09:23:14

+0

@PratikPatel事實上,這**是**提供的API。如果我沒有記錯,它使用'px'值,所以它不應該太難。我認爲唯一「不那麼容易」的是所有背後的實際數學,因爲每個節點都必須考慮其他節點x/y vals。至少'Graph.Node.getPos()'提供了構建數組的所有工具,您可以在其中進行數學計算。 – kaiser 2013-04-11 09:41:12

+0

你有什麼建議似乎是唯一的選擇。 – 2013-05-05 05:46:58