Что такое хорошая библиотека сетевого графика для языка X?

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

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

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

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

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

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

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

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

Ответ 1

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

Отказ от ответственности: я являюсь автором графического инструмента.: -)

Ответ 2

Для Clojure существует loom. Его WIP, но выглядит хорошо.

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

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