2014-01-14 88 views
3

對於相同的節點,我有兩個可摺疊的強制樹。從一個強制有向圖轉換到另一個d3js圖

我還沒有看到一個例子,我們可以從一棵樹過渡到另一棵樹,並在d3js中進行節點過渡和邊緣重構。

有沒有辦法做到這一點?

另一個相關的問題是,我們可以初始化每個節點對於強制指導圖的位置嗎?

編輯:這是一個example。我有兩棵樹,鏈接是一棵,並且我有另一棵樹,它們具有相同的分子但是不同的樹結構。我認爲如果我可以在不同的樹之間爲相同的分子或實體生成動畫,那將會很好。

+0

你是什麼意思由*距離函數*?你的意思是'linkDistance'還是你指的是你在'tick'函數中執行的一些計算? –

+0

@ t.888,不好意思,混亂,距離函數是我得到linkDistance和樹結構的方式,但是我覺得linkDistance在有向圖中並不是很明顯。 – user2149631

+0

你可以在節點上設置'x'和'''屬性來初始化它們的位置,然後將節點數組交給強制佈局,但是當將多個節點設置到同一個位置時,我遇到了問題 - 它使圖形走瘋。 –

回答

5

原則上,這些是要遵循的步驟。

  • 停止強制佈局來凍結節點的位置。
  • 消失鏈接(例如淡出)。
  • 將節點轉換到新位置。這可以通過在舊數據上設置新位置或完全更改數據,然後使用與tick處理程序中的代碼相同的代碼來執行具有轉換的力佈局
  • 重新添加鏈接。
  • 如果新佈局也使用強制佈局,請啓動該佈局。

我已經實現了這個here的一個例子。我使用兩組數據和兩個力佈局。首先,只顯示第一個力佈局的節點和鏈接,第二個僅在後臺運行。然後,第一個停止,我按照上面列出的步驟。

這不會滿足所有要求(例如,關於節點應如何轉換),但可以用作此類實現的起點。

+1

......並且如果被低估的人可以解釋這個答案如何沒有幫助,那將會非常有幫助。 –

+0

我有一個問題:當更新鏈接和節點位置時,force0的tick函數是否需要更改爲null? – user2149631

+0

不會。如果強制佈局停止,它將不會被調用。 –

相關問題