Лекция 1.6. Графвиз — различия между версиями
Admin (обсуждение | вклад) (→Простейший граф) |
Admin (обсуждение | вклад) |
||
(не показано 58 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | '''Graphviz | + | '''Graphviz''' - набор утилит для графического представления данных. |
− | |||
− | |||
Программа принимает описания отношений и элементов множеств, на которых определяется граф, и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную информацию, позволяющую "нарисовать" картинку графа. | Программа принимает описания отношений и элементов множеств, на которых определяется граф, и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную информацию, позволяющую "нарисовать" картинку графа. | ||
Строка 10: | Строка 8: | ||
* ребро графа, соединяющее вершину N с вершиной M | * ребро графа, соединяющее вершину N с вершиной M | ||
− | == | + | == Быстрый старт == |
− | + | Входной файл для программы «DOT» является обычным текстовым файлом на специальном языке разметки графа. Структура файла очень простая, например, | |
− | + | <nowiki> <graphviz> | |
+ | digraph G{ | ||
+ | Рождение->Юность->Зрелость->Старость->Смерть; | ||
+ | Юность->Смерть; | ||
+ | Зрелость->Смерть; | ||
+ | } | ||
+ | </graphviz></nowiki> | ||
+ | на выходе будет: | ||
− | <graphviz>digraph G{ | + | <graphviz> |
+ | digraph G{ | ||
+ | Рождение->Юность->Зрелость->Старость->Смерть; | ||
+ | Юность->Смерть; | ||
+ | Зрелость->Смерть; | ||
+ | } | ||
+ | </graphviz> | ||
+ | Программа «Dot» сама распознает все связи графа и упорядочит его таким образом, чтобы было наименьшее количество пересечений. | ||
+ | Если у вас узлы поименованы словосочетаниями, заключите их в кавычки, например: | ||
+ | <nowiki> <graphviz> | ||
+ | digraph G{ | ||
+ | "Сидоров Пётр Фёдорович" -> "Сидоров Иван Петрович" [label="отец"]; | ||
+ | "Сидорова Анна Павловна " -> "Сидоров Иван Петрович" [label="мать"]; | ||
+ | } | ||
+ | </graphviz></nowiki> | ||
<graphviz> | <graphviz> | ||
− | digraph G{ | + | digraph G{ |
− | " | + | "Сидоров Пётр Фёдорович" -> "Сидоров Иван Петрович" [label="отец"]; |
− | " | + | "Сидорова Анна Павловна " -> "Сидоров Иван Петрович" [label="мать"]; |
− | } | + | } |
− | </graphviz> | + | </graphviz> |
− | + | ==Свойства графа== | |
Для того, граф было удобнее просматривать, можно настроить следующие свойства. Например: | Для того, граф было удобнее просматривать, можно настроить следующие свойства. Например: | ||
Строка 43: | Строка 62: | ||
** '''fontcolor="blue"''' - цвет шрифта = голубой | ** '''fontcolor="blue"''' - цвет шрифта = голубой | ||
** '''shape="none"''' - форма = "без формы" | ** '''shape="none"''' - форма = "без формы" | ||
− | *** '''Формы узла [shape=?]''' - '''invtriangle''' - треугольник вершиной вниз; '''box''' - прямоугольник; '''ellipse''' - эллипс; '''invtrapezium''' - перевёрнутая трапеция; '''triangle''' - треугольник; '''trapezium''' - трапеция | + | *** '''Формы узла [shape=?]''' - '''invtriangle''' - треугольник вершиной вниз; '''box''' - прямоугольник; '''ellipse''' - эллипс; '''invtrapezium''' - перевёрнутая трапеция; '''triangle''' - треугольник; '''trapezium''' - трапеция; '''octagon''' - восьмиугольник; '''tripleoctagon''' - тройной восьмиугольник ([http://www.graphviz.org/doc/info/shapes.html Все формы]) |
** '''Ярославль [shape=Mdiamond]''' - узлу Ярославль придаётся форма ромба(алмаз) | ** '''Ярославль [shape=Mdiamond]''' - узлу Ярославль придаётся форма ромба(алмаз) | ||
** '''Сызрань [shape=Msquare]''' - узлу Сызрань придаётся форма квадрата | ** '''Сызрань [shape=Msquare]''' - узлу Сызрань придаётся форма квадрата | ||
Строка 50: | Строка 69: | ||
** '''Казань [shape=hexagon,color=green]''' - узлу Казань придаётся форма шестиугольника и зелёный цвет | ** '''Казань [shape=hexagon,color=green]''' - узлу Казань придаётся форма шестиугольника и зелёный цвет | ||
* Управление положением узлов - '''{rank=same; Елабуга Дзержинск Сызрань ;}''' - узлам Елабуга, Дзержинск, Сызрань предан разряд = тот же самый; '''ranksep=3''' - расстояние между разрядами; | * Управление положением узлов - '''{rank=same; Елабуга Дзержинск Сызрань ;}''' - узлам Елабуга, Дзержинск, Сызрань предан разряд = тот же самый; '''ranksep=3''' - расстояние между разрядами; | ||
− | * '''Свойства'''(edge)'''ребер''' - edge[color="blue",fontcolor="Green",fontsize=12] | + | * '''Свойства''' (edge) '''ребер''' - edge[color="blue",fontcolor="Green",fontsize=12] |
** '''color="Brown"''' - цвет = коричневый | ** '''color="Brown"''' - цвет = коричневый | ||
*** '''color="Green:blue:red"''' - трёхцветие (возможно любое количество) | *** '''color="Green:blue:red"''' - трёхцветие (возможно любое количество) | ||
Строка 60: | Строка 79: | ||
* '''Ярлык ребра''' [label="Волга"] - все связи '''Ярославль -> ... -> Сызрань''' будут помечены меткой Волга. | * '''Ярлык ребра''' [label="Волга"] - все связи '''Ярославль -> ... -> Сызрань''' будут помечены меткой Волга. | ||
+ | |||
+ | |||
+ | '''''Пример:''''' | ||
<nowiki><graphviz> | <nowiki><graphviz> | ||
Строка 75: | Строка 97: | ||
} | } | ||
</graphviz></nowiki> | </graphviz></nowiki> | ||
+ | |||
+ | '''''Результат:''''' | ||
+ | |||
<graphviz> | <graphviz> | ||
digraph G{ | digraph G{ | ||
Строка 90: | Строка 115: | ||
</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>