Как стать автором
Обновить

Комментарии 8

Спасибо за статью и линки на теорию.

Пробовал D3.js, но столкнулся с низкой производительностью для больших графов. В итоге остановился на vivagraph, т.к. она написана с использованием WebGL и заметно быстрее. Будет интересно услышать, есть ли еще более быстрые решения.
Тормоза именно из-за SVG и DOM, а не d3.js как такового. С помощью d3.js можно рисовать и на HTML Canvas, и на WebGL, и даже одновременно на SVG и Canvas. Скорость при этом будет совершенно другая. Недостаток Canvas очевидно в том, что с ним сложнее делать интерактивные рисунки со всплывающими при наведении подсказками, с перетаскиваемым узлами и т.п. Но по-моему я это как-то делал, хотя и сложнее чем с SVG. Наверное можно рисовать интерактивные вещи (например, узлы графа) в SVG, а не интерактивные (связи) в Canvas, но я сам так не делал.
Тоже столкнулся с торможением, было порядка, 60 узлов, связанных между собой почти каждый с каждым разными типами связей. Анимация вылета шла рывками, а прозрачность линий дополнительно тормозила в IE, пришлось отказаться.
Для своего проекта остановился на js.cytoscape.org из-за отличной документации(примеры) и возможности вложенных вершин
да, тоже по этим причинам остановился на нем. Насколько я понял, в D3.js нельзя группировать ноды или сворачивать как-то в коллекции?
Можно добавить пользовательский атрибут group всем узлам. Как это сделано здесь. Есть более изощренный пример, основанный на том же принципе.
ну в принципе примерно также работает и cytoscape, разве что в нем это стандартный атрибут parent.
А вот за второй пример спасибо! Жаль, плюсануть не могу
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации