因此,目前我正在嘗試創建一個圖表中幾千個節點和約30k鏈接的強制有向圖。您可能會猜到,模擬速度非常慢。我想要做的是預先計算節點的所有位置,然後渲染靜態(但是交互式)的圖形。有沒有辦法使用d3.js來計算一個沒有渲染它的力向圖(使其更快),然後從預先計算的值中渲染靜態圖?我的代碼目前是基於邁克·博斯托克的example.靜態D3力導向圖性能
2
A
回答
1
方法d3使用的是有力的圖形佈局是標準排斥力和吸引力模型,你可以在維基百科上找到僞代碼(http://en.wikipedia.org/wiki/Force-based_algorithms_%28graph_drawing%29#僞代碼)或檢查d3源本身(https://github.com/mbostock/d3/blob/master/src/layout/force.js)。該算法每個tick(或時間片)具有O(n^2)的複雜度,並且需要大約n個ticks才能達到平衡,因此O(n^3)用於整個佈局過程(http:// www .ecs.umass.edu/ECE /實驗室/ vlsicad/ece665 /簡報/力指向-Adel.ppt)。對於數千個節點來說,這是不實際的。
要嘗試回答您的具體問題,只需在您的SVG容器元素上使用CSS display:none即可。一旦初始模擬「最終」完成,您可以獲取SVG元素的HTML源代碼,並將其用作靜態但交互式表示的基礎。 (一旦你有所有元素的html,你只需要將鼠標懸停事件添加到他們,讓他們顯示他們的細節。
相關問題
- 1. D3 AngularJs力導向圖
- 2. D3 - 餅圖和力導向標籤
- 3. D3力有向圖方向
- 4. D3多重力有向圖
- 5. 設置D3力向圖
- 6. D3 V4力向圖,矩形
- 7. D3力導向佈局:邊框
- 8. 如何在D3.js V4中製作靜態力圖?
- 9. 獲得D3使用武力佈局靜態樹形圖
- 10. 力導演在D3圖不顯示我試圖模仿從d3.js網站向圖力圖表
- 11. d3.js力圖
- 12. d3武力有向圖,鏈接未畫
- 13. D3 - 部分受力指向圖
- 14. 將節點逐組添加到D3力導向圖
- 15. D3力向圖節點不具有屬性「重量」
- 16. D3徑向力佈局
- 17. d3.js靜態圖表滾動
- 18. 如何將動態圖例添加到Apex的D3力指向圖中?
- 19. 靜態類型的性能
- 20. 固定節點位置在D3力導向佈局
- 21. d3.js力導向佈局由一個形狀
- 22. D3/GraphGL力導向網絡可視化的放大鏡效果?
- 23. CUDA計算能力向後兼容性
- 24. D3向圖
- 25. 靜態庫與動態庫性能
- 26. Nginx靜態配置 - 錯誤導向
- 27. D3力導演JSON鄰接表
- 28. iOS靜態庫的向後兼容性
- 29. 單向綁定靜態屬性失敗
- 30. 爲什麼我的d3力指向圖不顯示邊緣?
當談到瀏覽器中的交互和動畫時,SVG通常是最慢的解決方案。畫布(或者如果你想用3D的WebGL畫布)進行動畫可能會提高性能,你必須將自己的(或使用一個庫)滾動到對象的拾取和拖拽上 –
^這正是我不想做的事情。我真的不需要完全模擬我的圖,我只需要可視化節點和鏈接,以及它們形成的聚類,所以我選擇了一個有向圖,而且我不需要拖動節點無論如何,我只需要能夠將鼠標懸停在每個節點上並查看關於它們的一些信息,所以我支付了所有不需要的東西的高性價比,我確信有一種方法可以將其刪除,但不知道如何。 – leonsas