- Graphviz как пользоваться linux
- Информация о пакете
- Зависимости пакета Graphviz
- Необязательные
- Необязательные (для сборки интерфейса с языками)
- Установка пакета Graphviz
- Конфигурирование пакета Graphviz
- Конфигурационные файлы
- Подробнее о конфигурировании
- Описание пакета
- Graphviz
- Материал из CustisWiki
- Содержание
- Быстрый старт
- Внешний вид графа
- Уровни в графах
- Многосекционный узлы
- Гиперссылки на графах
- Кластеры в графах
- Цвета
- Цвета и черно-белая печать
- Формы вершин
- Окончания ребер
- Неориентированные графы
- Graph
- Neato
- Twopi
- CIRCO
- Версии для печати
- Ссылки и дополнительная документация
Graphviz как пользоваться linux
В пакете Graphviz находятся программы визуализации графов. Визуализация графов является способом представления структурной информации в виде диаграмм, представляющих собой абстрактные графы и сети. В Graphviz есть несколько основных программ отображения графов на плоскости. В нем также есть веб интерфейс и графический интерактивный интерфейс, вспомогательные инструментальные средства, библиотеки и средства состыковки с языками.
Программы из пакета Graphviz, отображающие графы, получают описания графов в виде текста на простом языке и создают диаграммы в нескольких форматах, например, в виде обычных изображений и SVG — для веб-страниц, на Postscript — для включения в PDF или в другие документы, либо создают объекты, которые будут отображаться в интерактивном графическом браузере. (Graphviz также поддерживает формат GXL — диалект XML). На практике, графы обычно создаются из внешних источников данных, но их можно создавать и изменять вручную, либо прямо в исходном текстовом файле, либо в графическом редакторе. (Graphviz не предназначен для замены Visio, так что, вероятно, вы будете разочарованы, если попытаетесь использовать его в этой роли).
Этот пакет используется для автоматического рисования графов, что может оказаться важным в инженерии программ, базах данных и веб-дизайне, для создания сетей, а также для создания визуальных интерфейсов во многих других областях. В Graphviz есть множество полезных возможностей, доступных при построении конкретных диаграмм, например, можно выбрать цвет, шрифты, расположения узлов, стиль линий, гиперссылки и задать формы используемых элементов графа.
Информация о пакете
- Загрузка (HTTP): http://graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.26.3.tar.gz
- Загрузка (FTP): ftp://mirror.ovh.net/gentoo-distfiles/distfiles/graphviz-2.26.3.tar.gz
- Контрольная сумма MD5: 6f45946fa622770c45609778c0a982ee
- Размер загружаемого пакета: 17 MB
- Оценочный размер требуемого дискового пространства: 142 MB
- Оценочное время сборки: 1,5 SBU
Зависимости пакета Graphviz
Необязательные
Необязательные (для сборки интерфейса с языками)
SWIG (должен быть установлен пакет SWIG, иначе интерфейсы для языков программирования собраны не будут), Guile-2.0.3, IcedTea6-1.9.7 или JDK-6 Update 18, PHP-5.3.8, Python-2.7.2, Ruby-1.9.2-p290, Tcl-8.5.10, C# ( DotGNU Portable.NET или Mono ), Io , R , Lua и Objective Caml
Установка пакета Graphviz
Установите пакет Graphviz с помощью следующих команд:
В составе этого пакета нет набора тестов, позволяющего получить значимые результаты.
Теперь в роли пользователя root выполните:
Если хотите, создайте в директории с системными документами символическую ссылку на документацию, установленную в директории /usr/share/graphviz/doc ; для этого в роли пользователя root используйте следующую команду:
Конфигурирование пакета Graphviz
Конфигурационные файлы
Подробнее о конфигурировании
К конфигурации пакета Graphviz не предъявляется никаких требований. Вы можете установить дополнительные плагинов и инструментальные средства, доступные со страницы загрузки на http://www.graphviz.org/Download_source.php и получить дополнительные возможности. Если дополнительные плагины установлены, вы можете запустить команду dot_static -c (в роли пользователя root ) и обновить файл config в директории /usr/lib/graphviz .
Описание пакета
Установленные программы: acyclic, bcomps, ccomps, circo, dijkstra, dot, dot2gxl, dot_static, dotty, fdp, gc, gvcolor, gvpack, gvpr, gxl2dot, lefty, lneato, nop, prune, sccmap, tred, twopi и unflatten
Установленные библиотеки: libagraph.
Установленные директории: /usr/include/graphviz, /usr/lib/graphviz и /usr/share/graphviz
это фильтр, который получает на входе ориентированный граф и выдает копию графа с реверсными ребрами, которых достаточно, чтобы сделать граф ациклическим. Реверсное ребро наследует все атрибуты оригинального ребра
разбивает графы на его двусвязные компоненты, выдает компоненты в стандартный входной поток
разбивает графы на его связные компоненты, выдает компоненты в стандартный входной поток
рисует графы, используя для этого циклическую компоновку. Инструмент определяет двусвязные компоненты и рисует вершины каждого компонента по кругу. Затем при помощи рекурсивного радиального алгоритма строится дерево сочленения блоков. Пересечения ребер в круге сведены к минимуму за счет размещения по периметру круга такого количества ребер, сколько окажется возможным. В частности, если компонент внешнепланарный, то это значит, что его можно расположить на плоскости.
читает поток графов и для каждого вычисляет расстояние каждого узла от исходного узла
рисует ориентированные графы. Хорошо работает с графами DAG (ориентированный ациклический граф) и другими, которые можно отобразить в виде иерархии. Считывает файлы с графами с атрибутами и выдает их изображения. По умолчанию, выходной формат dot представляет собой входной файл с добавленными к нему координатами, указывающими позицию узла
осуществляет преобразование графов, представленных на языке DOT, в формат GXL. Если с помощью флага не указан тип преобразования, dot2gxl определит преобразование по суффиксу входного файла; суффикс .dot указывает, что будет выполняться преобразование из DOT в GXL, а суффикс .gxl указывает, что будет выполняться преобразование из GXL к DOT
версия dot, в которой все библиотеки Graphviz скомпилированы статически
является редактором графов системы X Window. Можно запустить как отдельный редактор или использовать в качестве интерфейса для приложений, использующих графы. Может управлять несколькими окнами с различными изображениями графов
Рисует неориентированные графы с использованием модели «spring». Используется директивный (force-directed) подход в стиле Фрачтермана (Fruchterman) и Рейнгольда (Reingold)
аналог программы wc для графов, с помощью которой в стандартный выходной поток выдается число узлов, ребер, связанных компонентов или кластеров, содержащихся во входных файлах. Если задано более одного графа, то также выдается общее количество всех графов
это фильтр, который устанавливает значения цвета узлов относительно первоначально заданных значений. Цвет улов рассчитывается вдоль ориентированных ребер по направлению, указываемому ребрами (как вектора HSB). Граф уже должен быть обработан программой dot
читает во входном потоке графы, объединяет графы в единую компоновку, позволяющую разместить их на плоскости и содает один граф, представляющий собой объединение (union) входных графов. Входные графы должны быть в формате dot и для них всех уже должна быть информация об их размещении на плоскости
потоковый редактор графов, созданный по влиянием редактора awk. Он копирует графы, поступающие на его вход, в выходной поток, при этом, возможно, преобразует их структуру и атрибуты, создает новые графы или выдает информацию произвольного вида
преобразует графы, представленные в формате GXL, на язык DOT. Если с помощью флага не указан тип преобразования, gxl2dot определит преобразование по суффиксу входного файла; суффикс .dot указывает, что будет выполняться преобразование из DOT в GXL, а суффикс .gxl указывает, что будет выполняться преобразование из GXL к DOT
это графический редактор, предназначенный работы с чертежами
является редактором графов системы X Window. Можно запустить как отдельный редактор или использовать в качестве интерфейса для приложений, использующих графы. Может управлять несколькими окнами с различными изображениями графов
читает поток графов и выдает их в выходной поток в красивом (каноническом) формате с использованием отступов. Если файлы не заданы, то чтение осуществляется из стандартного входного потока
читает ориентированные графы в том же самом формате с помощью программы dot и удаляет подграфы с корнем в узлах, указанных в командной строке с помощью параметров. Эти узлы сами не удаляются, но их легко можно пометить атрибутами так, что их легко можно будет найти с помощью потокового редактора графов, например, gpr. prune корректно обрабатывает циклы, петли и множественные ребра
разбивает орграфы на сильно связные компоненты и вспомогательное отображение связей между компонентами. В этом отображении каждый компонент сворачивается в узел. Результирующие графы выдаются в стандартный выходной поток. Количество узлов, ребер и сильно связных компонент выдается в стандартный поток ошибок. Программа sccmap является инструментом разбиения больших графов на меньшие и лучше управляемые части
вычисляет транзитивной сокращение ориентированных графов и выдает результирующие графы в стандартный выходной поток. При этом удаляются ребра, для которых предполагается транзитивность. Узлы и подграфы при этом не затрагиваются. «Смысл» и обоснованность приведенных графов зависит от приложения. tred особенно полезен как препроцессор для dot, позволяющий избежать путаницы в больших изображениях графов
изображает графы с использованием радиальной компоновки. Как правило, один узел выбирается в качестве центра и помещается в начало координат. Остальные узлы размещаются на последовательности концентрических окружностей с центром в начале координат, при этом для каждого узла задается фиксированное радиальное расстояние от предыдущего круга
является препроцессор для dot, который используется для улучшения соотношений в графах, имеющих много листьев или недостижимых узлов. Изображение такого графа на плоскости обычно широкое или высокое. unflatten вставляет невидимые ребра или регулирует minlen для ребер с тем, чтобы повысить компактность размещения
поддерживает программирование операций с графами, предоставляя для этого средства работы с графами в памяти и средства чтения и записи файлов, содержащих графы. Для графов, узлов и ребер можно указывать атрибуты, которые может определять программист, и пары строк имя-значение. Графы состоят из узлов, ребер и вложенных подграфов. Библиотека libagraph , когда с ее помощью строится преставление, использует исключительно библиотеку libcdt (бывшую libdict )
управляет словарями времени выполнения с использованием стандартных контейнеров типов данных: неупорядоченные множества set/multiset, упорядоченные множества set/multiset , списки, стеки и очереди
библиотека выражений, похожих на язык C
поддерживает работу в памяти с ориентированными и неориентированными графами, имеющими атрибуты, и осуществляет чтение и запись файлов, содержащих графы. Графы состоят из узлов, ребер и вложенных подграфов. Подграф может содержать любые узлы и ребра его родителей, и может перенаправляться в любую функцию libgraph при помощи указателя на граф график указатель, за исключением тех, для которых созданы новые атрибуты (для которых требуется основной граф)
поддерживает использование связных компонент в контексте компоновки графов в случае, когда используются другие библиотеки Graphviz. Один набор функций может использоваться для анализа единичного графа и разбиения на отдельные связные компоненты. Комплиментарный набор функций берет коллекцию графов (не обязательно являющихся компонентами одного графа), которые были размещены на плоскости поотдельности, и сравнительно плотно упаковывает их вместе. Упаковка производится с использованием полиномиального алгоритма К. Фрейвальдса (K. Freivalds) и др.
содержит функции поиска кратчайшего пути между двумя точками в простом многоугольнике
Перевод сделан с варианта оригинала, датированного 2010-09-08 06:26:20 +0000
Источник
Graphviz
Материал из CustisWiki
Graphviz — это разработанный специалистами лаборатории AT&T пакет утилит по автоматической визуализации графов, заданных в виде текстового описания. Пакет распространяется с открытыми исходными файлами и работает на всех операционных системах, включая Windows, Linux/Unix, Mac OS. Самой интересной программой пакета является «dot», автоматический визуализатор направленных графов, который принимает на вход текстовый файл со структурой графа, а на выходе формирует граф в виде графического, векторного или текстового файла.
Содержание
Быстрый старт
Входной файл для программы «DOT» является обычным текстовым файлом на специальном языке разметки графа. Структура файла очень простая, например,
на выходе будет
Программа «Dot» сама распознает все связи графа и упорядочит его таким образом, чтобы было наименьшее количество пересечений.
Чтобы использовать «dot»-графы в CustisWiki, используйте следующий синтаксис:
Если у вас узлы поименованы словосочетаниями, заключите их в кавычки, т. е.
Поздравляем! Теперь вы способны рисовать графы в CustisWiki. Остальной текст будет посвящен некоторым тонкостям использования Graphviz.
Внешний вид графа
«Dot» позволяет изменять внешний вид графа. Например, можно изменять форму фигур (прямоугольники, овалы, круги, параллелограммы, многоугольники), цвет и шрифт текста, цвет фона фигур, стиль стрелок и рамок фигур, подписи стрелок и т. д. Итак, основные объектами являются узлы («node») и ребра («edge»). Для того, чтобы настроить свойства всех узлов или ребер нужно вначале использовать команды
Также (в квадратных скобках после описания объекта) можно изменять настройки конкретного узла или ребра. Параметры графа, просто задаются в виде параметр=значение. Полезно запомнить параметр «rankdir», он может быть «TB» (top->bottom, параметр по умолчанию), или «LR» (left->right), и определяет, сверху-вниз, или справа-налево, нужно располагать узлы графа. Вот пестрый пример:
на выходе будет
Если предполагается, что граф будут не только просматривать через IE, но и печатать, то необходимо установить ширину картинки, иначе при печати картинка будет обрезана. Для этого следует задать внутри описания
Существенна только первая цифра. Число 6.7 подобрано эмпирически, оно обеспечивает печать полной картинки при настройках IE по умолчанию.
Уровни в графах
В «Dot» присутствует возможность связать узлы графа не только стрелками, но и уровнями отображения, что позволяет создавать шкалу и располагать узлы графа соответственно данной шкале. Для связывания используется следующая конструкция:
Например, при использовании следующей конструкции:
на выходе получается:
Многосекционный узлы
Dot позволяет создавать многосекционные узлы при это каждая секция может быть поименована, и тогда ребра можно продоводить между секциями и узлами.
Для включения режима многосекционности устанавливается атрибут узла shape.
Секции описываются в атрибуте label узла, с помощью разделителя «|». Для именования секции ее имя указывается в <>. При описание ребра, исходящего или входящего в секцию, секция именуется следующим образом:
Например, из такого описания:
Гиперссылки на графах
Можно использовать атрибут «URL», задавая относительные или абсолютные гиперссылки для узлов и ребер. Например
Кластеры в графах
Программа «Dot» позволяет объединять узлы графов в кластеры для подчеркивания общности.
Кластер описывается следующим синтаксисом:
При этом имя подграфа должно начинаться с префикса cluster, иначе подграф не позволяет себя отобразить на экран(раскраска, контур, подпись, .. ).
Цвета
Graphviz позволяет использовать широкую цветовую палитру, задавая цвета или по именам, в одной из известных палитр:
- Палитра X11
- SVG
- Набор палитр Brewer-а, что удобно при автоматической генерации схем — задаваемые числовым индексом цвета в более-менее вменяемой палитре.
Кроме именованных цветов, можно использовать обычное трехбайтное шестнадцатиричное кодирование
и выбирать цвета из палитры, например, на http://www.colorpicker.com/
Цвета и черно-белая печать
Graphviz позволяет использовать широкую цветовую палитру, однако, стоит не забывать, что контрастно выглядящие на цветном мониторе цвета, могут быть совершенно неразличимы после черно-белой печати. После проделанных экспериментов (Bug:11015), можно рекомендовать следующие палитры цветов (иллюстрированы на цвете ребер графа):
Формы вершин
Перечислим палитру возможных форм вершин (узлов).
Окончания ребер
Можно задавать стиль офомления начала («arrowtail») и конца («arrowhead») дуг (ребер):
Чтобы работал arrowtail, для ребра нужно указать свойство dir=both или dir=back.
Неориентированные графы
Наряду с рисованием ориентированных графов, есть несколько методов для автоматического рисования неориентированных графов (будем рассматривать их на примере несложной ER-диаграммы).
В отличие от автоматического рисования направленных («directed») графов, основанных на ранговой модели, есть несколько подходов к раскладке ненаправленных графов.
Graph
Ненаправленный граф можно нарисовать с помощью рангового подхода (несмотря на ненаправленность ребер) — будет использоваться программа «dot». Как это будет выглядеть для простой ER-диаграммы, можно увидеть ниже.
Очевидна неоптимальность такого подхода для неориентированных графов.
Neato
Метод «neato» использует «энергетическую» (spring) модель, по сути, близкую к методу искуственного отжига — начиная с некоторого состояния вершины перемещаются, чтобы минимизировать некую потенциальную энергию. Рекомендуем для ненаправленных графов общего вида.
Метод «fdp» по сути, близок к методу «neato», и использует другую разновидность «энергетического» («spring») подхода. Также рекомендуется для ненаправленных графов общего типа.
Twopi
Метод «twopi» рисует графы с радиальной раскладкой. По сути одна вершина выбирается центральной, и помещается в центр, а остальные размещаются на последовательности концентрических орбит, вокруг этой вершины. Т.е. все вершины на расстоянии в «одно ребро» от центра, лежат на первой орбите, «в два ребра» — на второй и т. д.
CIRCO
Метод «circo» использует «circular layout». Выделяются двусвязные компоненты (каждая вершина имеет по крайней мере два ребра) и вершины этих компонент рисуются на некотором круге. «Дополнительные» ребра рисуются радиально и далее процесс повторяется. Пересечение ребер внутри круга минимизируется максимально возможным выносом ребер с круга за его периметр.
Версии для печати
Как известно, трудно добиться хорошего результата одновременно на экране и на принтере, в силу разных разрешений. Картинка экранного разрешения будет плохо (с «зазубринами») выглядеть на принтере, а картинка печатного разрешения, будет очень плохо выглядеть на экране (к сожалению, современные броузеры выполняют очень примитивный ресайзинг картинок при показе), и будет достаточно много «весить». Все соображения о печатных картинках также относятся к случаю, когда вы переносите (например, копируя вебстраницу из броузера через клипборд) содержимое MediaWiki-статьи в MS Word или другой текстовый редактор. Для такого, «печатного» случая (т. е. если у вас не примитивные графы, и вы собираетесь их печатать или переносить в другую систему верстки), мы сделали «печатную версию» всех перечисленных графов, с разрешением около 200 DPI. Для этого надо использовать те же самые тэги с постфиксом «-print», например «graph-print»,«neato-print», и т.п.:
Полученные картинки являются компромиссом, между весом, читаемостью на экране и читаемостью на бумаге. Желательно не использовать для совершенно тривиальных графов, или графов, которых вы не собираетесь печатать.
Ссылки и дополнительная документация
Онлайн-документация, +последние изменения, FAQ и прочее можно найти на домашней странице пакета http://www.graphviz.org/Documentation.php
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».
Источник