Что такое хорошая библиотека сетевых графов для языка X? - PullRequest
39 голосов
/ 03 июня 2009

Я заметил, что постоянный вопрос звучит так: «Что такое хорошая библиотека сетевых графиков для языка X». Я играл с несколькими библиотеками и могу поделиться с вами своим опытом.

Python : NetworkX - это надежная библиотека, которая имеет встроенную визуализацию, но также имеет интерфейс для Graphviz с использованием pyGraphviz . (pyGraphviz и NetworkX написаны одним и тем же автором). NetworkX с открытым исходным кодом и очень прост в использовании.

Perl : Circos разработан для визуализации геномов и других очень сложных наборов данных. Он всегда будет использовать циклический макет, но часто он является наиболее подходящим макетом, если ваша сеть действительно большая и ее «модульность» низкая. Circos с открытым исходным кодом.

.

1019 * Net : NodeXL разработан Microsoft Research и является надстройкой для Excel и библиотекой .Net 3.5. Он довольно открытый (для стандартов Microsoft) и использует алгоритм визуализации Фрухтермана-Рейнгольда.

Java : JUNG2 недавно был выпущен и также является надежной библиотекой. Имеет расширенную визуализацию и поддержку ключевых метрик. JUNG2 с открытым исходным кодом.

UbiGraph : UbiGraph имеет интерфейсы для разных языков, включая Python (а в NetworkX есть поддержка UbiGraph), Ruby, PHP, Java, C, C ++, C #, Haskell и OCaml. Он имеет очень аккуратную трехмерную визуализацию сетевых графиков с использованием сервера XML-RPC. Базовая версия бесплатна, за профессиональную версию нужно заплатить.

Standalone: ​​ Вы всегда можете использовать готовый пакет, такой как: Graphviz (Win, Linux, OSX), Pajek (Win), UCINET (Win) или даже Visio (победа).

Я уверен, что есть еще много пакетов, но это те, которые я использовал сам. Какие еще библиотеки или пакеты доступны?

Ответы [ 6 ]

8 голосов
/ 24 марта 2011

Вы должны добавить graph-tool в список питонов. Он очень полный и реализован на C ++ с помощью библиотеки графов Boost, что делает его на несколько порядков быстрее, чем альтернативы только на python, такие как NetworkX.

Отказ от ответственности: я автор Graph-Tool. : -)

2 голосов
/ 07 января 2015

Stanford Network Analysis Project (SNAP) был написан на C ++ и предназначен для анализа производительности для больших массивов данных. Проект был расширен библиотекой Python и содержит исчерпывающую документацию.

Обратите также внимание, что проект является хорошим ресурсом для эмпирических наборов данных из различных областей.

2 голосов
/ 19 августа 2014

Для Clojure , есть ткацкий станок . Его WIP, но выглядит хорошо.

1 голос
/ 03 июня 2009

В Java prefuse - лучший пакет для рисования графиков. Он обладает очень быстрым алгоритмом принудительной компоновки, и, поскольку вы можете настраивать параметры в режиме реального времени и перетаскивать узлы вокруг, чтобы график выглядел так, как вам нужно, вы сможете исследовать и упорядочивать гораздо большие графики, чем с любым неинтерактивная система.

Попробуйте этот демонстрационный апплет , и вы тоже влюбитесь в него ...

0 голосов
/ 05 февраля 2016

yFiles - это набор алгоритмов компоновки, который предлагает широчайший диапазон различных автоматических сложных стилей компоновки. Это коммерческое предложение, доступное для нескольких популярных платформ и языков: Javascript, Java, C # и др.

Существует интерактивная демоверсия , в которой показано множество доступных алгоритмов , и библиотеки можно бесплатно оценить.

Отказ от ответственности: я работаю в компании, которая создает эти библиотеки, однако в SO я не представляю своего работодателя. Эта рекомендация основана на моем собственном мнении. За последние 15 лет я видел много разных реализаций комплекта макетов для вышеуказанных языков, и я не знаю ни одной доступной реализации, которая была бы такой же полной и расширяемой, как эта.

0 голосов
/ 03 июня 2009

Если вам нравятся примеры на этой странице , взгляните на возможности построения графиков Mathematica . Автор страницы галереи Ифан Ху работал в Wolfram Research, где разрабатывал алгоритмы рисования графиков для огромных графов. Эти алгоритмы теперь интегрированы в Mathematica. В зависимости от того, как вы собираетесь использовать графические рисунки, вы можете получить огромную выгоду, если будете использовать Mathematica для анализа ваших графов; см., например, это сообщение в блоге .

...