2011-10-11 7 views
16

Używam d3.js do generowania ukierunkowanego na siłę układu mojego wykresu składającego się z 50 000 węzłów. Cokolwiek mniej niż 5K, biblioteka działa cuda. Używam przykładu bezpośrednio z d3.js examples page, zmieniając odniesienie, tak aby ładował mój plik json.Wizualizacja układu siły D3 jest powolna, gdy używany jest duży zbiór danych?

Czy są jakieś wskazówki, aby przyspieszyć renderowanie? Jeśli są jakieś inne alternatywy, byłoby to również dobre.

Odpowiedz

10

Wątpię, aby znaleźć opcję, która może renderować węzły 50K w układzie ukierunkowanym na siłę, bez spowalniania indeksowania - most implementations are O(n3), i nie uważam, że D3 jest inaczej.

Jeśli narzędzia offline są akceptowalne, możesz wypróbować Gephi, narzędzie oparte na komputerze, które może obsłużyć bardzo duże wykresy.

+18

D3, stosuje się aproksymacji Barnes-Hut, co sprawia, że ​​O (n log n) za iteracji. Ale nawet bez symulacji, renderowanie 50 000 węzłów (i jakkolwiek wielu łączy) będzie wolne. – mbostock

6

Dla mnie jest to, że animacja jest bardzo powolny podczas wyświetlania dużych ilości danych za pośrednictwem d3 siły skierowanej wykresie.

Gdy potrzebuję wyświetlić wiele węzłów/linków, moim planem będzie usunięcie animacji i statyczny diagram skierowany na siłę. Może możesz spróbować? Tak, to mniej zabawne, ale gdy już masz dużo węzłów, nie sądzę, że animacja jest tak pomocna.

+0

To prawda. Animacja nie byłaby przydatna. Nie zrobiłem tego jeszcze, ale pracuję nad alternatywnym podejściem, które będzie renderowane tylko wtedy, gdy pewne węzły będą rozszerzone - coś jak dynamiczne renderowanie węzła. – Legend

Powiązane problemy