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

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

Так в итоге-то получилось сделать плавную анимацию графа на 30000 нод и с ребрами между ними? )
Думаю, если товарищ мой, даст добро, опишу в следующем посте подробно, что было сделано на версии 0.8.2 и как все устроено, с картинками =)
Да, в итоге все получилось на ура, и анимация и связи
А не подскажете инструмент которым можно было бы не только выводить графы, но и рассчитывать их отображения?
К примеру — у меня есть N точек, и указана сила связи между каждыми двумя из них. Мне надо рассчитать такое размещение точек на плоскости, чтобы расстояние между ними было пропорционально силе связей. Понятно что будут несоответствия, т.к. спроецировать такой граф на плоскость можно далеко не всегда, но вот мне и нужно эти несоответствия минимизировать…
В идеале хорошо бы еще учитывать свойства связей (жесткость, тип..), и свойства самих точек…

Если Хабра сообществу интересно дальнещее детальное освещение simgajs
Очень интересно)
Мне кажется, или D3 умеет почти тоже самое?
Да D3 умеет тоже самое, и рассматривали его в качестве альтернативы Сигме (канвасу), но основа D3 — SVG, производительность в разы ниже, чем на канвасе, либо на том же WebGL
The developer preview of Superconductor currently only supports the following platform:

An Apple laptop/desktop computer
Mac OS X 10.8 ('Mountain Lion') or newer
An NVIDIA (preferred) or ATI graphics chip available in your computer
Нам нужно было решение, которое будет работать, без крутых видеокарт и привязки к железу и софту
Вот пример, где используется связка D3.js и Three.js — render geographic information
я изучу выше упомянутые либы и по ним дам отдельный коммент. Что касается весов: в сигме по умолчанию ноды имеют веса, т.е. вы можете присвоить какие вам надо, по некому алгоритму. В плане отображения. может написать плагины к той же сигме, и в зависимости от веса распределить соседние. В комплект к sigma от автора есть плагин — назовем «соседи» вытаскивает соседние ноды по ID переданной ноды. В общем мое видение и составляющие, как бы я реализовал
А для графов я думаю это не плохо www.graphdracula.net/
на вкус и цвет, товарища — нет =) но спасибо за альтернативу изучу
graphdracula — реализована поверх SVG. про SVG был коммент выше
Скажите, библиотека предоставляет какие-либо API для работы с событиями? Можно ли отрисовать с помощью неё какой-нибудь custom элемент и с помощью библиотеки использовать его как исходную точку для связи с новым узлом? Например, у меня есть кейс: есть направленный граф, на каждом узле которого находится маленький UI элемент, из которого можно «вытянуть» связь в пустоту. Как только я отпущу эту связь, на месте, где я её отпустил, должен создастся новый узел графа и к нему должна быть привязана связь от графа, с которого я начал её тянуть. Сейчас для этих целей я использую jsPlumb, но меня он не устраивает по ряду причин: например, я не могу корректировать механизмы построения связей между узлами, а мне хотелось бы рассредоточить связи так, чтобы они пересекались только при необходимости. Вернее, как вы знаете, реализовать можно всё, если очень постараться, просто хотелось бы услышать ваше мнение, подходит ли sigmajs для подобных задач? Ибо покопавшись в документации(одним глазком, правда), я не нашел нужной мне информации.
С событиями работать умеет: События. По описанному Вами кейсу мне уведилось, что есть все ивенты для реализации задачи.
Касательно связей между нодами — механизмы можете корректировать. Советую Вам посмотреть на примеры плагинов на ГитХабе, и реализовать решение в виде плагина к Сигме, по опыту быстрее, проще и более гибко, так как вы имеете доступ не только в открытому API, но и к внутренностям библиотеки.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории