Лекция 1.6. Графвиз — различия между версиями
Admin (обсуждение | вклад) (Новая: Категория:Семинар) |
Admin (обсуждение | вклад) |
||
| (не показано 114 промежуточных версий 4 участников) | |||
| Строка 1: | Строка 1: | ||
| + | '''Graphviz''' - набор утилит для графического представления данных. | ||
| + | Программа принимает описания отношений и элементов множеств, на которых определяется граф, и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную информацию, позволяющую "нарисовать" картинку графа. | ||
| + | Для использования Графвиз требуется использовать примитивный язык описания графов dgl. | ||
| + | Основные понятия: | ||
| + | * граф, | ||
| + | * вершина графа -- элемент множества, | ||
| + | * ребро графа, соединяющее вершину N с вершиной M | ||
| + | == Быстрый старт == | ||
| − | [[Категория: | + | Входной файл для программы «DOT» является обычным текстовым файлом на специальном языке разметки графа. Структура файла очень простая, например, |
| + | |||
| + | <nowiki> <graphviz> | ||
| + | digraph G{ | ||
| + | Рождение->Юность->Зрелость->Старость->Смерть; | ||
| + | Юность->Смерть; | ||
| + | Зрелость->Смерть; | ||
| + | } | ||
| + | </graphviz></nowiki> | ||
| + | |||
| + | на выходе будет: | ||
| + | |||
| + | <graphviz> | ||
| + | digraph G{ | ||
| + | Рождение->Юность->Зрелость->Старость->Смерть; | ||
| + | Юность->Смерть; | ||
| + | Зрелость->Смерть; | ||
| + | } | ||
| + | </graphviz> | ||
| + | |||
| + | Программа «Dot» сама распознает все связи графа и упорядочит его таким образом, чтобы было наименьшее количество пересечений. | ||
| + | |||
| + | Если у вас узлы поименованы словосочетаниями, заключите их в кавычки, например: | ||
| + | |||
| + | <nowiki> <graphviz> | ||
| + | digraph G{ | ||
| + | "Сидоров Пётр Фёдорович" -> "Сидоров Иван Петрович" [label="отец"]; | ||
| + | "Сидорова Анна Павловна " -> "Сидоров Иван Петрович" [label="мать"]; | ||
| + | } | ||
| + | </graphviz></nowiki> | ||
| + | |||
| + | <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{ | ||
| + | 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></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> | ||
| + | |||
| + | == [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>