DOT (язык)
Граф, описанный на языке DOT, обычно представляет собой текстовый файл с расширением .gv или .dot в понятном для человека и обрабатывающей программы формате.
В графическом виде графы, описанные на языке DOT, представляются с помощью специальных программ, например Graphviz.
Расширение
Хотя язык допускает использование стандартных расширений .gv и .dot, следует отдавать предпочтение первому варианту — .gv, так как расширение .dot используется в Microsoft Office 2003[1].
Синтаксис
Общие положения
Структура графа на языке DOT описывается в виде списка субграфов, каждый элемент которого представляет собой конструкцию:
graph %имя_графа% {
}
внутри которой (в фигурных скобках — { }) находятся комментарии и инструкции, описывающие субграф. Инструкции описывают вершины и рёбра целевого графа и разделяются символом точкой с запятой — ;.
Комментарии
Язык DOT поддерживает комментарии в стиле языков C и C++ — // и /**/, а также используемый для этих целей в некоторых языках программирования символ # в качестве первого символа однострочного комментария.
// Комментарий в одну строку.
# Комментарий в одну строку.
/* Комментарий
из нескольких
строк. */
Неориентированный граф
Неориентированный граф в языке DOT описывается списком вершин и рёбер, представленных названием вершин и двойным тире (--) между связанными вершинами.
graph graphname {
a;
b;
c;
d;
a -- b;
b -- c;
b -- d;
}
Или эквивалентным образом, опустив избыточные описания:
graph graphname {
a -- b -- c;
b -- d;
}
Ориентированный граф
Ориентированный граф в языке DOT описывается списком вершин и рёбер, представленных названием вершин и стилизованной тире и треугольной скобкой стрелочкой (->) между связанными вершинами:
digraph graphname {
a -> b -> c;
b -> d;
}
Либо с избыточным описанием:
digraph graphname {
a;
b;
c;
d;
a -> b;
b -> c;
b -> d;
}
Атрибуты
При описании графов на языке DOT можно использовать атрибуты, определяющие цвет, форму и стиль вершин и рёбер. Атрибуты описываются парами ключ=значение, заключёнными в квадратные скобки ([ключ=значение]). Для каждого элемента графа может быть определено несколько атрибутов, разделённых пробелом
graph graphname {
// label - видимое название вершины
a [label="Foo"];
// shape - определение формы вершины
b [shape=box];
// color - определение цвета ребра
a -- b -- c [color=blue];
// style - определение стиля ребра
b -- d [style=dotted];
}
Ограничения
Так как язык 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 используется множество программ, виджетов и библиотек, среди которых:
- Graphviz
- OmniGraffle
- ZGRViewer
- VizierFX
Аналоги
- GraphML
- Trivial Graph Format
- GML
- GXL
- XGMML
- DGML
См. также
Примечания
- File extension .dot or .gv? (недоступная ссылка). Дата обращения: 8 марта 2011. Архивировано 5 сентября 2012 года. (англ.)
Ссылки
- Документация по языку DOT (англ.)
- Google Chart Tools: Image Charts : GraphViz Charts (англ.)
- flow.ps shape file - Postscript - символы блок-схем для Graphviz