Автоматизация компоновки сил для сетевого графа

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

Кто-нибудь знает решение на стороне сервера, если это возможно?


person Luke W    schedule 07.06.2016    source источник


Ответы (1)


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

Макеты Force или аналогичные используются в ряде других пакетов, которые можно использовать на стороне сервера.

Например, sfdp или neonto из graphviz. Graphviz будет производить широкий спектр выходных данных, среди которых SVG (для варианта, который обеспечивает некоторый доступ к элементам графика больше, чем то, что сделало бы растровое изображение).

Что касается Python, существуют такие модули, как Networkx и igraph, которые предлагают некоторые возможности рисования. В частности, Networkx предлагает широкий набор параметров рисования, например force и спектральный макет (что может быть очень полезно для плотных графов), но также может интерфейс к graphviz и, следовательно, обеспечивает гораздо больший контроль над всем процессом обработки графика.

Надеюсь это поможет.

person A_A    schedule 14.06.2016
comment
правильно, мы пытаемся равномерно распределить самые большие узлы, чтобы людям было легче видеть основные узлы. мы используем gephi, чтобы раздвинуть более крупные узлы, затем заморозить большие на месте, а затем применить силовую компоновку к кластерным сообществам. мы пытаемся удалить gephi из процесса и заставить его работать без вмешательства человека. смысл? - person Luke W; 14.06.2016
comment
Да, это так. Это имело смысл и раньше :), и вы можете сделать это с помощью Graphviz или, возможно, комбинации graphviz и networkx. Вам может понадобиться немного кода, потому что graphviz не будет обрабатывать эту сортировку, зависящую от размера узла, за вас. (Вы после фактического кода?) - person A_A; 14.06.2016