Визуализация компоновки D3 медленно замедляется при использовании большого набора данных?
Я использую d3.js для создания ориентированного на силу макета моего графика, состоящего из 50K узлов. Для всего, что меньше 5K, библиотека творит чудеса. Я использую пример прямо на странице d3.js примеров, изменив ссылку, чтобы загрузить мой json файл.
Есть ли советы по ускорению рендеринга? Если есть другие альтернативы, это тоже хорошо.
Ответы
Ответ 1
Я сомневаюсь, что вы найдете какой-либо вариант, который может отображать 50K-узлы в силовом макете, не замедляя сканирование - большинство реализаций - O (n3), и я не думаю, что D3 ничем не отличается.
Если офлайн-инструменты приемлемы, вы можете проверить Gephi инструмент на рабочем столе, который может обрабатывать очень большие графики.
Ответ 2
Для меня это очень медленная анимация при отображении большого количества данных по графику, ориентированному на силу d3.
Когда мне нужно отображать много узлов/ссылок, мой план будет состоять в том, чтобы удалить анимацию и иметь диаграмму направленной статической силы. Может быть, вы можете попробовать это? Да, это менее забавно, но как только у вас много узлов, я не думаю, что анимация помогает.
Ответ 3
Возможно, вы захотите попробовать GraphGL для визуализации больших сетей в Интернете:
https://gephi.org/2011/gsoc-mid-term-graphgl-network-visualization-with-webgl/
Ответ 4
Для более чем 1k элементов в силовой макете рассмотрите возможность использования холста вместо svg. Это может помочь в производительности рендеринга. См. Пример здесь:
https://vida.io/documents/Ye5eGKJrfn3xBmnS3
Ответ 5
Я знаю, что вопрос старый, но в любом случае... лучше всего для больших данных является cytoscapejs (http://js.cytoscape.org/). Я работаю с библиотеками графов уже пару лет, и Cytoscape никогда не подводит меня.
В настоящее время я тестирую visjs, d3v5 и cytoscapejs v3 для действительно больших данных (даже 100k узлов и 300k ребер) для двух ситуаций: когда у меня фиксированные посты или нет. В то время как d3 работает неплохо, когда есть фиксированное положение и когда сила "выключена" в симуляции, cytoscape работает намного лучше для обеих ситуаций. Эта библиотека использует алгоритмы графиков для вычисления макета, вы можете применить даже свой собственный алгоритм для макета. Если вы хотите макет с силой, вы можете попробовать Springy тогда.
http://js.cytoscape.org/#layouts