DOT (язык)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/6n-graf.svg/250px-6n-graf.svg.png)
Граф, описанный на языке DOT, обычно представляет собой текстовый файл с расширением .gv или .dot в понятном для человека и обрабатывающей программы формате.
В графическом виде графы, описанные на языке DOT, представляются с помощью специальных программ, например Graphviz.
Расширение
[править | править код]Хотя язык допускает использование стандартных расширений .gv и .dot, следует отдавать предпочтение первому варианту — .gv, так как расширение .dot используется в Microsoft Office 2003[1].
Синтаксис
[править | править код]Общие положения
[править | править код]Структура графа на языке DOT описывается в виде списка субграфов, каждый элемент которого представляет собой конструкцию:
graph %имя_графа% {
}
внутри которой (в фигурных скобках — { }) находятся комментарии и инструкции, описывающие субграф. Инструкции описывают вершины и рёбра целевого графа и разделяются символом точкой с запятой — ;.
Комментарии
[править | править код]Язык DOT поддерживает комментарии в стиле языков C и C++ — // и /**/, а также используемый для этих целей в некоторых языках программирования символ # в качестве первого символа однострочного комментария.
// Комментарий в одну строку.
# Комментарий в одну строку.
/* Комментарий
из нескольких
строк. */
Типы графов
[править | править код]Неориентированный граф
[править | править код]![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/39/DotLanguageUndirected.svg/220px-DotLanguageUndirected.svg.png)
Неориентированный граф в языке DOT описывается списком вершин и рёбер, представленных названием вершин и двойным тире (--) между связанными вершинами.
graph graphname {
a;
b;
c;
d;
a -- b;
b -- c;
b -- d;
}
Или эквивалентным образом, опустив избыточные описания:
graph graphname {
a -- b -- c;
b -- d;
}
Ориентированный граф
[править | править код]![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/DotLanguageDirected.svg/220px-DotLanguageDirected.svg.png)
Ориентированный граф в языке DOT описывается списком вершин и рёбер, представленных названием вершин и стилизованной тире и треугольной скобкой стрелочкой (->) между связанными вершинами:
digraph graphname {
a -> b -> c;
b -> d;
}
Либо с избыточным описанием:
digraph graphname {
a;
b;
c;
d;
a -> b;
b -> c;
b -> d;
}
Атрибуты
[править | править код]![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/52/DotLanguageAttributes.svg/220px-DotLanguageAttributes.svg.png)
При описании графов на языке DOT можно использовать атрибуты, определяющие цвет, форму и стиль вершин и рёбер. Атрибуты описываются парами ключ=значение, заключёнными в квадратные скобки ([ключ=значение]). Для каждого элемента графа может быть определено несколько атрибутов, разделённых пробелом
graph graphname {
// label - видимое название вершины
a [label="Foo"];
// shape - определение формы вершины
b [shape=box];
// color - определение цвета ребра
a -- b -- c [color=blue];
// style - определение стиля ребра
b -- d [style=dotted];
}
Ограничения
[править | править код]![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Commutative_diagram_bad.svg/220px-Commutative_diagram_bad.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Commutative_diagram_fixed.svg/220px-Commutative_diagram_fixed.svg.png)
Так как язык DOT располагает элементы оптимальным образом автоматически, в нём не предусматривается указание их позиций. Поэтому иногда элементы располагаются не соответствующим ожидаемому образом.
Для корректировки визуального представления используются графические редакторы.
Например:
digraph g {
node [shape=plaintext]
A1 -> B1
A2 -> B2
A3 -> B3
A1 -> A2 [label=f]
A2 -> A3 [label=g]
B2 -> B3 [label="g'"]
B1 -> B3 [label="(g o f)'" tailport=s headport=s]
{ rank=same; A1 A2 A3 }
{ rank=same; B1 B2 B3 }
}
Программное обеспечение
[править | править код]Для представления графов, описанных на языке DOT используется множество программ, виджетов и библиотек, среди которых:
Аналоги
[править | править код]См. также
[править | править код]Примечания
[править | править код]- ↑ File extension .dot or .gv? Дата обращения: 8 марта 2011. Архивировано из оригинала 5 сентября 2012 года. (англ.)
Ссылки
[править | править код]- Документация по языку DOT (англ.)
- Google Chart Tools: Image Charts : GraphViz Charts (англ.)
- flow.ps shape file - Postscript - символы блок-схем для Graphviz
![]() | В статье не хватает ссылок на источники (см. рекомендации по поиску). |