Визуализация графов

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

Graphviz – программное обеспечение визуализации графов с открытом исходным кодом. В его состав входит несколько основных программ верстки. Смотрите галерею gallery с образцами верстки. Также имеются веб интерактивные графические интерфейсы, вспомогательные программы, библиотеки, языковые привязки. Мы не можем обеспечить широкую функциональность визуальных редакторов, но существует достаточно внешних проектов, и даже коммерческих, которые включают в себя Graphviz. Вы можете найти некоторые из них в разделе Ресурсы.      

Программы верстки Graphviz используют простое текстовое описание графов, создавая диаграммы в таких широко используемых форматах, как графические и SVG для веб, PDF или PostScript для включений в другие документы; также возможно интерактивное отображение. (Graphviz также поддерживает GXL, XML диалект.)

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

На практике, графы часто генерируются из внешних ресурсов с данными; но они также могут быть созданы и редактированы непосредственно, как прямо из текстовых файлов, так и с помощью графического редактора. (Graphviz не претендует на то, чтобы стать заменой Visio, поэтому может быть не целесообразно использовать его в качестве последнего.)   

Обзор

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

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

fdp
Программа «эластичной» отрисовки графов, подобна neato, но использует редукцию.
Fdp выполняет эвристический алгоритм Фришермана-Рейнгольда, включающий многосеточный решатель, обрабатывающий большие и  кластерные ненаправленные графы.  

sfdp
Мультимасштабная версия fdp для верстки больших графов. 

twopi
Для радиальной отрисовки графов, Graham Wills 97. Расположение узлов на концентрических окружностях зависит от их дистанции от данного корневого узла. Положение корневого узла можно выбрать или предоставить это сделать программе. 

circo
Для круговой отрисовки, Six и Tollis 99, Kauffman и Wiese 02. Подходит для диаграмм множественных циклических структур, таких, как телекоммуникационные сети.

Программы для просмотра

•	dotty – устаревший настраиваемый Unix/X оконный просмотрщик, который последовательно был портрирован на Microsoft Windows.
•	tcldot – TCL/TK расширение для Graphviz.
•	WebDot – tcldot скриптовый WWW сервис для графов в HTML документах.

            Также есть упрощенная версия, написанная на perl.

•	Grappa – Java пакет для графов, данные которых описаны на Java.
•	ZGRViewer – SVG-ориентированный просмотрщик для больших графов с функцией удаления/приближения.  
•	Mac OS X graphviz
•	smyrna – прототип OpenGL просмотрщика 

Потоковые редакторы

•	gvpr – общецелевой потоковый редактор, в духе awk (или в духе perl, если не знаете последний). 

Примеры приложений

•	Документация: «Милые диаграммы», автоматически произведенные с помощью doxygen и dot. (Из Graphviz source documentation.)
•	WWW Graph Server: Для веб приложений Graphviz, смотрите WebDot.
•	Google Charts Graphviz API. Держитесь на плаву!
•	Саnviz – Javascript библиотека для элемента HTML5 canvas   

Контакты

Если Вы обнаружили баг или убеждены, что что-то работает не так, как надо, пожалуйста, отошлите описание ошибки, используя форму form.
Если у Вас вопросы общего или технического характера, сначала обратите Ваше внимание на список рассылки Graphviz mailing list. Мы следим за списком, но, возможно, что есть и другие пользователи, которые смогут ответить Вам лучше или быстрее, чем мы. Только, пожалуйста, не отправляйте детализованные описания ошибок туда.

John Ellson (проблемы со сборкой, инсталляцией, конфигурацией или веб сервером)
Emden Gansner (по вопросам работы программ)
Yifan Hu (внесение построенного Вами графа в образцы)  
Arif Bilgin (по вопросам работы программ, связанным с Windows)
Dwight Perry (по вопросам, связанным с вебсайтом)