我使用D3.js閱讀了許多關於強制佈局的代碼,並且我發現邊緣元素只是「源」和「目標」。我想生成一個圖形,其佈局與Gephi中的'Altas'相似。在我的數據中,邊具有「權重」元素,這些元素描述了它所鏈接的節點的相關性,並且在啓動力佈局時應考慮這一點。這樣類似的節點可以聚集在一起。有沒有一種方法來實現這一點,或者強制佈局中使用的物理模型與邊緣的重量無關?如何使用D3.js強制佈局生成邊緣權重網絡圖
1
A
回答
0
是的,這在D3.js中是可以的,但是,我推薦使用webcola庫,因爲它更簡單,更快速,並且與D3.js一起工作得很好。
除了source
和target
以外,每個邊緣可能包含其他信息。因此,很容易添加weight
屬性,如:
let edge = {
source: node1,
target: node2,
weight: 2
};
當使用webcola(https://github.com/tgdwyer/WebCola/),你可以添加一些約束來使用你的權重,或者您可以使用linkDistance
作爲一個函數,解釋在這裏:https://github.com/tgdwyer/WebCola/wiki/link-lengths,如:
let weightFactor = 10;
let d3cola = cola.d3adaptor(d3)
.size([500, 400])
.linkDistance(function (l) { return l.weight * weightFactor; };
因此,步驟是:
- 建立你的圖與D3.js,但是,
- 與webcola
模擬它可以爲這樣的d3.js創建webcola模擬的一個實例:
d3cola.avoidOverlaps(true)
.handleDisconnected(false)
.start(30);
let simulation = this.d3cola
.nodes(graph.nodes) // graph is your graph
.links(graph.edges)
.start();
+0
感謝您的回答!這確實給了我一個很好的解決方案。 –
+0
我很高興我的解決方案得到了幫助。 – Guybrush
相關問題
- 1. D3.js強制佈局路徑標籤沿邊緣移動不正確
- 2. d3.js使用固定佈局繪製網絡
- 3. 如何讓d3.js強制佈局重力矩形?
- 4. 如何動態更新d3.js強制佈局圖?
- 5. d3.js強制佈局不運行
- 6. D3.js強制指導佈局?
- 7. D3.js強制佈局網絡的閾值函數的鏈接行程寬度
- 8. 如何使用React創建d3強制佈局圖形
- 9. 添加邊緣權重以繪製網絡中的輸出x
- 10. CytoscapeJS網絡圖 - 邊緣沒有繪製
- 11. 使用graphml文件獲得d3.js強制定向佈局
- 12. 強制執行的d3.js添加邊緣標籤
- 13. D3.js強制佈局:如何隔離節點組?
- 14. 2 D3.js在同一頁面上強制佈局圖形?
- 15. 在rect中添加文本的強制佈局圖d3.js REACTJS
- 16. 如何在使用D3.js強制佈局時在圓上放置文本?
- 17. D3.js樹圖佈局
- 18. 使用新數據重置D3強制佈局
- 19. 如何在d3力佈局中實現雙向平行邊緣?
- 20. D3 JS - 強制圖 - 刪除節點後不重新啓動佈局節點
- 21. R中繪製網絡(控制邊緣厚度加上非重疊邊緣)
- 22. D3.js強制佈局:顯示任何節點的根路徑
- 23. 使用d3畫布強制定向圖形多邊形
- 24. d3.js強制佈局圖:如何從頭開始構建節點對象?
- 25. d3.js:強制佈局是否僅適用於圓圈?
- 26. 用OGDF佈局邊緣?
- 27. 畫布 - 有時用lineTo()生成邊緣
- 28. 如何在佈局的邊緣製作圖像?
- 29. 在D3強制佈局圖中使用下拉菜單
- 30. 在D3強制佈局中使用數據(...)來更新圖形
這將是很好,你告訴社區解決方案是否有效。也許,別人有像你一樣的問題... – Guybrush