Макет графика: изменение макета с сохранением формы рисунка - PullRequest
1 голос
/ 01 февраля 2012

Я хотел бы нарисовать график , состоящий из узлов и ребер, с использованием алгоритма компоновки пружины (своего рода сило-направленного макета) После того, как график выложен, я бы хотел, чтобы пользователь мог интерактивно добавлять новые узлы, и позволял макету развиваться , то есть позиционирование новых узлов при сохранении предыдущей «формы» (без перемещения уже позиционированного элемента). слишком много узлов).

Я имею в виду что-то вроде того, что WordVis делает на http://www.wordvis.com.

В настоящее время я использую пружинный макет, доступный в библиотеке GraphDracula . Это «простой», что означает, что если вы измените макет графика, вы можете получить совершенно другой макет (я думаю, это связано с вызовами Math.rand в алгоритме)

Какой алгоритм / стратегия делает то, что я хотел бы сделать?

Я вижу, что Layouter графдракулы устанавливает начальный узел pos на ноль, а затем выполняет итерацию для вычисления позиций конечных узлов. Предположим, что я добавляю набор узлов newNodes, смежных с expandedNode: для поддержания существующей фигуры, достаточно ли установить начальное положение каждого из newNodes на одно из expandedNode, а затем применить силы ко всем узлам еще раз?

Есть ли у вас какой-либо указатель на алгоритм, который не только размечает график, но также позволяет добавлять новые узлы, изменяя макет всего графика, не меняя слишком много чертежа?

Любая подсказка приветствуется.

В настоящее время я работаю с javascript, но язык не важен.

1 Ответ

0 голосов
/ 25 февраля 2012

Для этого можно использовать Gephi :

  1. Импортировать график
  2. На панели «Макеты» визуализируйте график с помощью ForceAtlas, а затем остановите макет.
  3. Выберите все узлы, щелкните правой кнопкой мыши и «Расставьте» узлы.Они не будут двигаться.
  4. Добавить новые узлы и ссылки.
  5. Запустить тот же макет снова.

Конечно, это не идеальное решение, но этот трюк будетРаботайте разумно, если не добавляете слишком много новых узлов, которые соединяют различные области графика.

...