2012-02-25 37 views
1

我有使用「節點」和「線條」一D3設置。當圖形首次出現時,它會隨着重力反彈,直到它落到中間。有沒有人知道如何在沒有「反彈」效應的情況下自動出現在中間位置?D3.js越來越節點出現在中間沒有「反彈」

P.S我正在使用強制佈局

回答

5

調用開始重置冷卻參數alpha;當佈局收斂於其解決方案時,alpha會呈指數衰減,然後停止,以免浪費cpu。在開始時沒有抖動(除了重合的節點,這是避免被零除的必要條件)。但是,任何時候你有衝突的力量和幾何約束(鏈接),是很自然的想到佈局開始時進行調整。

如果你想避免這種反彈,你需要永久保持圖形的熱度(比如通過調用d3.timer(function() { force.resume(); })),或者你需要做其他的事情,比如手動調整alpha參數以逐漸重新加熱,而不是瞬間重新加熱。

編輯:在2.8.x之前,你可以在啓動時同步運行的動力佈局完全避免第一個反彈。例如:http://bl.ocks.org/1667139

+0

感謝您的回覆迅速,我給它一試! – jwhiting 2012-02-25 19:20:05

1

另一種策略我以前用過的是從零逐漸在第一,比方說,50只或100的力增加蜱每個節點的半徑。你可以看到是什麼樣子(在Protovis,但它會表現在D3相同的方式)在上one.org data site的多林統計地圖。