Spec-Zone.ru › Graphviz

DOT

Язык Graphviz

Эти форматы создают вывод на языке dot.

canon

Использование canon создаёт красиво отформатированную версию входных данных без выполнения компоновки.

Пример: простой граф, каноническое форматирование с -Tcanon
$ echo 'digraph { a->b }' | dot -Tcanon
digraph {
        node [label="\N"];
        a -> b;
}

dot / gv

Параметры dot (и псевдоним gv) соответствуют выводу dot с атрибутами и являются форматом вывода по умолчанию. Он воспроизводит входные данные вместе с информацией о компоновке графа. В частности, графу присваивается атрибут bb, задающий ограничивающую рамку рисунка. Если у графа есть метка, её положение задаётся атрибутом lp.

Каждому узлу присваиваются атрибуты pos и width, а прямоугольники записей задаются атрибутом rects. Если узел является многоугольником и задан атрибут vertices, этот атрибут содержит вершины узла.

Каждому ребру присваивается атрибут pos, а если у ребра есть метка, её положение задаётся атрибутом lp.

Пример: простой граф, вывод координат компоновки с помощью -Tdot
$ echo 'digraph { a->b }' | dot -Tdot
digraph {
        graph [bb="0,0,54,108"];
        node [label="\N"];
        a    [height=0.5,
             pos="27,90",
             width=0.75];
        b    [height=0.5,
             pos="27,18",
             width=0.75];
        a -> b  [pos="e,27,36.104 27,71.697 27,63.983 27,54.712 27,46.112"];
}

xdot

Формат xdot расширяет формат dot, предоставляя гораздо более подробную информацию о том, как рисуются компоненты графа. Для этого используются дополнительные атрибуты узлов, рёбер и графов.

См. также документацию по типу атрибута xdot

Формат развивается; приветствуются комментарии и предложения по улучшению представления. Чтобы допускать изменения формата, Graphviz добавляет к графу атрибут xdotversion. Если во входном графе задан атрибут xdotversion, средство визуализации будет выводить только возможности, поддерживаемые этой версией. Обратите внимание, что форматы xdot1.2 и xdot1.4 эквивалентны соответственно установке значений xdotversion=1.2 и xdotversion=1.4.

Дополнительные атрибуты рисования могут присутствовать у узлов, рёбер, кластеров и самого графа. Добавлены шесть новых атрибутов:

Атрибут Описание Ограничения
draw Общее рисование без меток
ldraw Рисование метки
hdraw Стрелка у головного конца Только для рёбер
tdraw Стрелка у хвостового конца Только для рёбер
hldraw Метка головного конца Только для рёбер
tldraw Метка хвостового конца Только для рёбер

Для объекта графа обычно сначала указывают директиву рисования, а затем директиву метки. Например, для узла сначала используют команды из draw, а затем команды из ldraw.

Значения этих атрибутов представляют собой конкатенацию некоторого набора (возможно, с повторениями) из следующих 14 операций рисования или задания атрибутов. (Число в скобках указывает версию xdot, в которой операция была добавлена в формат. Если номер версии не указан, операция входила в исходную спецификацию.)

E x₀ y₀ w h
Закрашенный эллипс ((x - x₀) ÷ w)² + ((y - y₀) ÷ h)² = 1
e x₀ y₀ w h
Незакрашенный эллипс ((x - x₀) ÷ w)² + ((y - y₀) ÷ h)² = 1
P n x₁ y₁ ... xₙ yₙ
Закрашенный многоугольник, заданный указанными n точками
p n x₁ y₁ ... xₙ yₙ
Незакрашенный многоугольник, заданный указанными n точками
L n x₁ y₁ ... xₙ yₙ
Ломаная, заданная указанными n точками
B n x₁ y₁ ... xₙ yₙ
B-сплайн, заданный указанными n контрольными точками
b n x₁ y₁ ... xₙ yₙ
Закрашенный B-сплайн, заданный указанными n контрольными точками (1.1)
T x y j w n -b₁b₂...bₙ
Текст, нарисованный с использованием базовой точки (x,y). Текст состоит из n байтов, следующих за -. Текст выравнивается по левому краю (по центру, по правому краю) относительно точки, если j равно соответственно -1 (0, 1). Значение w задаёт ширину текста, вычисленную библиотекой.
t f
Задать характеристики шрифта. Целое число f представляет собой побитовое ИЛИ следующих значений:
Флаг Значение Мин. версия
BOLD 1
ITALIC 2
UNDERLINE 4
SUPERSCRIPT 8
SUBSCRIPT 16 (1.5)
STRIKE_THROUGH 32 (1.6)
OVERLINE 64 (1.7)
C n -b₁b₂...bₙ
Задать цвет заливки. Значение цвета состоит из n байтов, следующих за -. (1.1)
c n -b₁b₂...bₙ
Задать цвет пера. Значение цвета состоит из n байтов, следующих за -. (1.1)
F s n -b₁b₂...bₙ
Задать шрифт. Размер шрифта указывается в пунктах и равен s. Имя шрифта состоит из n байтов, следующих за -. (1.1)
S n -b₁b₂...bₙ
Задать атрибут стиля. Значение стиля состоит из n байтов, следующих за -. Синтаксис значения совпадает с синтаксисом, определённым для styleItem в атрибуте style. (1.1)
I x y w h n -b₁b₂...bₙ
Внешнее изображение, нарисованное в прямоугольнике с нижним левым углом (x,y) и верхним правым углом (x+w,y+h). Имя изображения состоит из n байтов, следующих за -. Обычно это растровое изображение. Обратите внимание, что размер изображения, даже после преобразования из пикселей в пункты, может отличаться от требуемого размера (w,h). Предполагается, что средство визуализации выполнит необходимое масштабирование. (1.2)

Обратите внимание, что закрашенные фигуры (эллипсы, многоугольники и B-сплайны) подразумевают две операции: сначала рисуется закрашенная фигура текущим цветом заливки, затем незакрашенная фигура текущим цветом, шириной и стилем пера.

В контексте одного атрибута рисования, например draw, графические атрибуты имеют неявное состояние. То есть после задания цвета, стиля, шрифта или характеристики шрифта это значение остаётся действующим для всех соответствующих операций рисования, пока его не изменит другая команда xdot.

Значения стиля, которые могут быть включены в графическую модель, не появляются в выводе xdot. В частности, значения стиля filled, rounded, diagonals и invis не будут выведены. Если стиль содержит invis, вывод xdot вообще отсутствует.

В версии xdot 1.4 строки цвета могут задавать линейные и радиальные градиенты. Линейные градиенты имеют вид
'[' x₀ y₀ x₁ y₁ n [color-stop]⁺ ']'
где (x₀,y₀) и (x₁,y₁) задают начальную и конечную точки отрезка градиента, а n указывает количество цветовых маркеров. Каждый цветовой маркер имеет вид
v m -b₁b₂...bₘ
где v — число в диапазоне [0,1], задающее положение на отрезке градиента, а цвет задаётся строкой из m байтов b₁b₂...bₘ в том же формате, что и для цветов в операциях 'c' и 'C'.

Радиальные градиенты имеют вид
'(' x₀ y₀ r₀ x₁ y₁ r₁ n [color-stop]⁺ ')'
где xⱼ yⱼ rⱼ для j=0,1 задают центры и радиусы начальной и конечной окружностей, а n указывает количество цветовых маркеров. Цветовой маркер имеет тот же формат, что и для линейных градиентов: задаются дробное смещение и соответствующий ему цвет.

При обработке выравнивания текста приложению может потребоваться заново вычислить ширину строки с помощью собственных средств отрисовки.

Операция текста используется только в атрибутах меток. Обычно операции, не связанные с текстом, используются только в атрибутах, не относящихся к меткам. Однако если для ребра задан атрибут decorate, его атрибут метки также будет содержать операцию ломаной. Кроме того, если метка является сложной меткой в стиле HTML, она также будет содержать операции, не связанные с текстом.

Все координаты и размеры указываются в пунктах. Обратите внимание, что если ребро или узел невидимы, операции рисования к ним не прикрепляются.

Информация о версиях:

Версия xdot Версия Graphviz Изменение
>1.0 1.9
>1.1 2.8 Первая версия подключаемого модуля
>1.2 2.13 Добавлен оператор изображения I
>1.3 2.31 Добавлена числовая точность
>1.4 2.32 Добавлены градиентные цвета
>1.5 2.34 Исправлена проблема компоновки текста; исправлен инвертированный вектор градиента; добавлена поддержка вывода для конкретных версий; добавлен новый оператор t для характеристик текста
>1.6 2.35 Добавлен бит STRIKE-THROUGH для t
>1.7 2.37 Добавлен OVERLINE для t
Пример: простой граф, вывод координат компоновки и информации о рисовании с помощью -Txdot
$ echo 'digraph { a->b }' | dot -Txdot
digraph {
        graph [_draw_="c 9 -#fffffe00 C 7 -#ffffff P 4 0 0 0 108 54 108 54 0 ",
             bb="0,0,54,108",
             xdotversion=1.7
        ];
        node [label="\N"];
        a    [_draw_="c 7 -#000000 e 27 90 27 18 ",
             _ldraw_="F 14 11 -Times-Roman c 7 -#000000 T 27 86.3 0 7 1 -a ",
             height=0.5,
             pos="27,90",
             width=0.75];
        b    [_draw_="c 7 -#000000 e 27 18 27 18 ",
             _ldraw_="F 14 11 -Times-Roman c 7 -#000000 T 27 14.3 0 7 1 -b ",
             height=0.5,
             pos="27,18",
             width=0.75];
        a -> b  [_draw_="c 7 -#000000 B 4 27 71.7 27 63.98 27 54.71 27 46.11 ",
             _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 30.5 46.1 27 36.1 23.5 46.1 ",
             pos="e,27,36.104 27,71.697 27,63.983 27,54.712 27,46.112"];
}

© 2025 The Graphviz Authors
Licensed under the Eclipse Public License 1.0.
https://www.graphviz.org/docs/outputs/canon/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API