Лекция 1.6. Графвиз — различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
(не показаны 104 промежуточные версии 4 участников) | |||
Строка 1: | Строка 1: | ||
− | + | '''Graphviz''' - набор утилит для графического представления данных. | |
− | + | Программа принимает описания отношений и элементов множеств, на которых определяется граф, и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную информацию, позволяющую "нарисовать" картинку графа. | |
+ | Для использования Графвиз требуется использовать примитивный язык описания графов dgl. | ||
+ | Основные понятия: | ||
+ | * граф, | ||
+ | * вершина графа -- элемент множества, | ||
+ | * ребро графа, соединяющее вершину N с вершиной M | ||
− | <graphviz> | + | == Быстрый старт == |
− | digraph G | + | |
− | { | + | Входной файл для программы «DOT» является обычным текстовым файлом на специальном языке разметки графа. Структура файла очень простая, например, |
− | + | ||
− | + | <nowiki> <graphviz> | |
− | + | digraph G{ | |
− | + | Рождение->Юность->Зрелость->Старость->Смерть; | |
− | + | Юность->Смерть; | |
− | + | Зрелость->Смерть; | |
− | + | } | |
− | + | </graphviz></nowiki> | |
− | + | ||
− | + | на выходе будет: | |
+ | |||
+ | <graphviz> | ||
+ | digraph G{ | ||
+ | Рождение->Юность->Зрелость->Старость->Смерть; | ||
+ | Юность->Смерть; | ||
+ | Зрелость->Смерть; | ||
} | } | ||
</graphviz> | </graphviz> | ||
+ | Программа «Dot» сама распознает все связи графа и упорядочит его таким образом, чтобы было наименьшее количество пересечений. | ||
− | + | Если у вас узлы поименованы словосочетаниями, заключите их в кавычки, например: | |
− | |||
− | + | <nowiki> <graphviz> | |
− | + | digraph G{ | |
− | + | "Сидоров Пётр Фёдорович" -> "Сидоров Иван Петрович" [label="отец"]; | |
− | + | "Сидорова Анна Павловна " -> "Сидоров Иван Петрович" [label="мать"]; | |
− | + | } | |
− | + | </graphviz></nowiki> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<graphviz> | <graphviz> | ||
+ | digraph G{ | ||
+ | "Сидоров Пётр Фёдорович" -> "Сидоров Иван Петрович" [label="отец"]; | ||
+ | "Сидорова Анна Павловна " -> "Сидоров Иван Петрович" [label="мать"]; | ||
+ | } | ||
+ | </graphviz> | ||
+ | |||
+ | ==Свойства графа== | ||
+ | |||
+ | Для того, граф было удобнее просматривать, можно настроить следующие свойства. Например: | ||
+ | * Направленность графа: | ||
+ | **'''rankdir=LR''' - слева-направо | ||
+ | **'''rankdir=TB''' - сверху вниз | ||
+ | **'''ratio=auto''' - отношение = авто; | ||
+ | *'''Цвет фона графа''' - graph [bgcolor=Snow2] - окрашивает фон в цвет - "серый снег" | ||
+ | * '''Свойства''' (node) '''узлов''' - node[color="Pink",fontsize=10, style=filled, fontcolor="blue", shape="none"] (Сочетание двух и более слов записывается в кавычки - '''"Нижний Новгород"''') | ||
+ | ** '''color="Pink"''' - цвет = розовый ([[Цвета в Вики]]) | ||
+ | ** '''fontsize=8''' - размер шрифта = 8 | ||
+ | ** '''style=filled''' - стиль = заполненный (без неё узел прозрачен) | ||
+ | ** '''fontcolor="blue"''' - цвет шрифта = голубой | ||
+ | ** '''shape="none"''' - форма = "без формы" | ||
+ | *** '''Формы узла [shape=?]''' - '''invtriangle''' - треугольник вершиной вниз; '''box''' - прямоугольник; '''ellipse''' - эллипс; '''invtrapezium''' - перевёрнутая трапеция; '''triangle''' - треугольник; '''trapezium''' - трапеция; '''octagon''' - восьмиугольник; '''tripleoctagon''' - тройной восьмиугольник ([http://www.graphviz.org/doc/info/shapes.html Все формы]) | ||
+ | ** '''Ярославль [shape=Mdiamond]''' - узлу Ярославль придаётся форма ромба(алмаз) | ||
+ | ** '''Сызрань [shape=Msquare]''' - узлу Сызрань придаётся форма квадрата | ||
+ | ** '''Кострома [shape=circle]''' - узлу Кострома придаётся форма круга | ||
+ | ** '''"Нижний Новгород" [shape=doublecircle]''' - узлу "Нижний Новгород" придаётся форма двойного круга | ||
+ | ** '''Казань [shape=hexagon,color=green]''' - узлу Казань придаётся форма шестиугольника и зелёный цвет | ||
+ | * Управление положением узлов - '''{rank=same; Елабуга Дзержинск Сызрань ;}''' - узлам Елабуга, Дзержинск, Сызрань предан разряд = тот же самый; '''ranksep=3''' - расстояние между разрядами; | ||
+ | * '''Свойства''' (edge) '''ребер''' - edge[color="blue",fontcolor="Green",fontsize=12] | ||
+ | ** '''color="Brown"''' - цвет = коричневый | ||
+ | *** '''color="Green:blue:red"''' - трёхцветие (возможно любое количество) | ||
+ | ** '''dir=both''' - направление стрелки в две стороны | ||
+ | ** '''fontsize=8''' - размер шрифта = 8 | ||
+ | ** '''fontcolor="blue"''' - цвет шрифта = зелёный | ||
+ | ** '''style=dotted''' - стиль = пунктирная линия | ||
+ | ** '''arrowhead="dot"''' - голова стрелки = "точка", "none" - нет ([http://www.graphviz.org/doc/info/arrows.html Все формы]) | ||
+ | * '''Ярлык ребра''' [label="Волга"] - все связи '''Ярославль -> ... -> Сызрань''' будут помечены меткой Волга. | ||
+ | |||
+ | |||
+ | |||
+ | '''''Пример:''''' | ||
+ | |||
+ | <nowiki><graphviz> | ||
digraph G{ | digraph G{ | ||
graph [bgcolor=Snow2]; | graph [bgcolor=Snow2]; | ||
Строка 68: | Строка 96: | ||
{rank=same; Елабуга Дзержинск Сызрань ;} | {rank=same; Елабуга Дзержинск Сызрань ;} | ||
} | } | ||
+ | </graphviz></nowiki> | ||
+ | |||
+ | '''''Результат:''''' | ||
+ | |||
+ | <graphviz> | ||
+ | digraph G{ | ||
+ | graph [bgcolor=Snow2]; | ||
+ | rankdir=LR ; | ||
+ | node[color="Pink",fontsize=8, fontcolor="blue",style=filled, shape="none"] ; | ||
+ | edge[color="Brown",fontcolor="Green",fontsize=8] ; | ||
+ | Ярославль -> Кострома -> "Нижний Новгород" -> Казань -> Сызрань [dir=both, label="Волга"]; | ||
+ | "Нижний Новгород" -> Дзержинск [style=dotted, label="Ока",arrowhead="dot" ] ; | ||
+ | Казань -> Елабуга [label="Кама", color="Green:blue:red"] ; | ||
+ | Ярославль [shape=Mdiamond], Сызрань [shape=Msquare], Кострома [shape=circle]; | ||
+ | "Нижний Новгород" [shape = doublecircle],Казань[shape=hexagon,color=green] | ||
+ | {rank=same; Елабуга Дзержинск Сызрань ;} | ||
+ | } | ||
</graphviz> | </graphviz> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | == [http://lib.custis.ru/index.php/Graphviz Побробнее о Graphviz] == | ||
− | [[Категория: | + | [[Категория:Веб 2.0]] |
Текущая версия на 10:00, 19 февраля 2015
Graphviz - набор утилит для графического представления данных. Программа принимает описания отношений и элементов множеств, на которых определяется граф, и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную информацию, позволяющую "нарисовать" картинку графа.
Для использования Графвиз требуется использовать примитивный язык описания графов dgl. Основные понятия:
- граф,
- вершина графа -- элемент множества,
- ребро графа, соединяющее вершину N с вершиной M
Быстрый старт
Входной файл для программы «DOT» является обычным текстовым файлом на специальном языке разметки графа. Структура файла очень простая, например,
<graphviz> digraph G{ Рождение->Юность->Зрелость->Старость->Смерть; Юность->Смерть; Зрелость->Смерть; } </graphviz>
на выходе будет:
<graphviz> digraph G{ Рождение->Юность->Зрелость->Старость->Смерть; Юность->Смерть; Зрелость->Смерть; } </graphviz>
Программа «Dot» сама распознает все связи графа и упорядочит его таким образом, чтобы было наименьшее количество пересечений.
Если у вас узлы поименованы словосочетаниями, заключите их в кавычки, например:
<graphviz> digraph G{ "Сидоров Пётр Фёдорович" -> "Сидоров Иван Петрович" [label="отец"]; "Сидорова Анна Павловна " -> "Сидоров Иван Петрович" [label="мать"]; } </graphviz>
<graphviz>
digraph G{ "Сидоров Пётр Фёдорович" -> "Сидоров Иван Петрович" [label="отец"]; "Сидорова Анна Павловна " -> "Сидоров Иван Петрович" [label="мать"]; } </graphviz>
Свойства графа
Для того, граф было удобнее просматривать, можно настроить следующие свойства. Например:
- Направленность графа:
- rankdir=LR - слева-направо
- rankdir=TB - сверху вниз
- ratio=auto - отношение = авто;
- Цвет фона графа - graph [bgcolor=Snow2] - окрашивает фон в цвет - "серый снег"
- Свойства (node) узлов - node[color="Pink",fontsize=10, style=filled, fontcolor="blue", shape="none"] (Сочетание двух и более слов записывается в кавычки - "Нижний Новгород")
- color="Pink" - цвет = розовый (Цвета в Вики)
- fontsize=8 - размер шрифта = 8
- style=filled - стиль = заполненный (без неё узел прозрачен)
- fontcolor="blue" - цвет шрифта = голубой
- shape="none" - форма = "без формы"
- Формы узла [shape=?] - invtriangle - треугольник вершиной вниз; box - прямоугольник; ellipse - эллипс; invtrapezium - перевёрнутая трапеция; triangle - треугольник; trapezium - трапеция; octagon - восьмиугольник; tripleoctagon - тройной восьмиугольник (Все формы)
- Ярославль [shape=Mdiamond] - узлу Ярославль придаётся форма ромба(алмаз)
- Сызрань [shape=Msquare] - узлу Сызрань придаётся форма квадрата
- Кострома [shape=circle] - узлу Кострома придаётся форма круга
- "Нижний Новгород" [shape=doublecircle] - узлу "Нижний Новгород" придаётся форма двойного круга
- Казань [shape=hexagon,color=green] - узлу Казань придаётся форма шестиугольника и зелёный цвет
- Управление положением узлов - {rank=same; Елабуга Дзержинск Сызрань ;} - узлам Елабуга, Дзержинск, Сызрань предан разряд = тот же самый; ranksep=3 - расстояние между разрядами;
- Свойства (edge) ребер - edge[color="blue",fontcolor="Green",fontsize=12]
- color="Brown" - цвет = коричневый
- color="Green:blue:red" - трёхцветие (возможно любое количество)
- dir=both - направление стрелки в две стороны
- fontsize=8 - размер шрифта = 8
- fontcolor="blue" - цвет шрифта = зелёный
- style=dotted - стиль = пунктирная линия
- arrowhead="dot" - голова стрелки = "точка", "none" - нет (Все формы)
- color="Brown" - цвет = коричневый
- Ярлык ребра [label="Волга"] - все связи Ярославль -> ... -> Сызрань будут помечены меткой Волга.
Пример:
<graphviz> digraph G{ graph [bgcolor=Snow2]; rankdir=LR ; // направление графа слева направо node[color="Pink",fontsize=8, fontcolor="blue",style=filled, shape="none"] ; edge[color="Brown",fontcolor="Green",fontsize=8] ; Ярославль -> Кострома -> "Нижний Новгород" -> Казань -> Сызрань [dir=both, label="Волга"]; "Нижний Новгород" -> Дзержинск [style=dotted, label="Ока",arrowhead="dot" ] ; Казань -> Елабуга [label="Кама", color="Green:blue:red"] ; Ярославль [shape=Mdiamond], Сызрань [shape=Msquare], Кострома [shape=circle]; "Нижний Новгород" [shape = doublecircle],Казань[shape=hexagon,color=green] {rank=same; Елабуга Дзержинск Сызрань ;} } </graphviz>
Результат:
<graphviz>
digraph G{ graph [bgcolor=Snow2]; rankdir=LR ; node[color="Pink",fontsize=8, fontcolor="blue",style=filled, shape="none"] ; edge[color="Brown",fontcolor="Green",fontsize=8] ; Ярославль -> Кострома -> "Нижний Новгород" -> Казань -> Сызрань [dir=both, label="Волга"]; "Нижний Новгород" -> Дзержинск [style=dotted, label="Ока",arrowhead="dot" ] ; Казань -> Елабуга [label="Кама", color="Green:blue:red"] ; Ярославль [shape=Mdiamond], Сызрань [shape=Msquare], Кострома [shape=circle]; "Нижний Новгород" [shape = doublecircle],Казань[shape=hexagon,color=green] {rank=same; Елабуга Дзержинск Сызрань ;}
}
</graphviz>