1
我想修改directed graph editor以下方式:D3力導向佈局 - 冷拔三通不改變節點的位置
當鏈路被繪製時,它不會重新定位源節點和目標節點。相反,鏈接將在節點的當前位置之間繪製。
當圍繞拖動現有節點(使用CTRL),它不會影響連接到它的任何相連的節點的位置。相反,所有其他節點將保持其位置,並且只有鏈接到拖動節點的鏈接纔會根據拖動來更改其長度。
我想提供這種功能力的linkDistance:
force.linkDistance(function(link) {
var deltaX = d.target.x - d.source.x,
deltaY = d.target.y - d.source.y,
dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
return dist;
})
認爲這會導致力的假設,沒有必要重新定位節點在鏈路的每一側(以下documentation)。
然而,這導致了運行時錯誤,我解決不了。
在圖表的這種行爲如何可以實現任何想法?
謝謝,這個簡單的加法了! 我試圖尋找到更多的佈局(https://github.com/mbostock/d3/wiki/Layouts),但沒有似乎符合我的需要(非物理圖形佈局)。 您是否有更好的佈局選擇建議? – Gabis 2014-09-29 08:06:01
@ user1147537力佈局重新計算的節點位置每秒60次,然後你的代碼將它們移動到這些位置每秒60次。由於所有節點都是固定的,因此不需要此佈局和頻繁重繪。事實上,你在這裏不需要任何佈局。你可以從代碼中刪除任何提到的'強制'。但是,只要添加了節點/鏈接,就必須自己調用tick()函數。另外,force.drag需要被替換爲d3.behavior.drag()。 – meetamit 2014-09-29 14:38:07
非常感謝您的詳細解釋!我會將我的代碼更改爲您的建議。 – Gabis 2014-09-30 07:52:58