Обычный текст
Форматы plain и plain-ext создают вывод на простом построчном языке. Последний формат отличается тем, что для рёбер, если применимо, указывает имена портов на конечном и начальном узлах.
Примеры вывода для простого графа с двумя узлами, соединёнными ребром:
-Tplain
$ echo 'digraph { a->b }' | dot -Tplain
graph 1 0.75 1.5
node a 0.375 1.25 0.75 0.5 a solid ellipse black lightgrey
node b 0.375 0.25 0.75 0.5 b solid ellipse black lightgrey
edge a b 4 0.375 0.99579 0.375 0.88865 0.375 0.7599 0.375 0.64045 solid black
stop
-Tplain-ext
$ echo 'digraph { a->b }' | dot -Tplain-ext
graph 1 0.75 1.5
node a 0.375 1.25 0.75 0.5 a solid ellipse black lightgrey
node b 0.375 0.25 0.75 0.5 b solid ellipse black lightgrey
edge a b 4 0.375 0.99579 0.375 0.88865 0.375 0.7599 0.375 0.64045 solid black
stop
Существует четыре типа инструкций.
graph scale width height node name x y width height label style shape color fillcolor edge tail head n x₁ y₁ .. xₙ yₙ [label xl yl] style color stop
- graph
- Значения width и height задают ширину и высоту рисунка. Его левый нижний угол находится в начале координат. Значение scale указывает, как следует масштабировать рисунок, если задан атрибут size и рисунок необходимо привести к указанному размеру. Если масштабирование не требуется, значение будет равно 1.0. Обратите внимание, что все координаты и размеры графа, узлов и рёбер указаны без масштабирования.
- node
- Значение name — это имя узла, а x и y задают его положение. Значения width и height задают ширину и высоту узла. Значения label, style, shape, color и fillcolor задают соответственно метку, стиль, форму, цвет и цвет заливки узла; при необходимости используются значения атрибутов по умолчанию. Если у узла нет атрибута style, используется значение "solid".
- edge
- Значения tail и head задают имена начального и конечного узлов. В формате plain-ext к имени конечного или начального узла добавляется двоеточие и имя порта, если ребро соединяется с узлом через порт. n — это число контрольных точек, задающих B-сплайн, образующий ребро. Далее следуют 2*n чисел, задающих координаты x и y контрольных точек в порядке от начального узла к конечному. Если у ребра есть метка, далее указываются координаты x и y её положения. Описание ребра завершается значениями его стиля и цвета. Как и для узлов, если стиль не задан, используется значение "solid".
Примечание: Контрольные точки, указанные в инструкции edge, задают тело ребра. В частности, если у ребра есть наконечник стрелки у конечного или начального узла, между последней или первой контрольной точкой и границей соответствующего узла будет зазор. Существует по крайней мере три способа устранить этот зазор:
- Настроить входной граф так, чтобы для всех рёбер использовались
dir=none,arrowhead=noneилиarrowtail=none. В этом случае конечные контрольные точки всегда будут касаться узла. - Рассмотреть отрезок, соединяющий контрольную точку с центром узла, и определить точку пересечения этого отрезка с границей узла. Затем использовать контрольную точку и точку пересечения в качестве главной оси наконечника стрелки. Недостаток такого подхода в том, что при наличии у ребра порта оно не будет указывать на центр узла. В этом случае вместо контрольной точки и центра можно использовать контрольную точку и касательную к ней.
- Настроить входной граф так, чтобы использовались
headclip=falseилиtailclip=false. В этом случае ребро будет заканчиваться в центре узла, а не на его границе. При использовании наконечников стрелок зазор всё равно останется, но обычно он будет находиться внутри узла. Приложению всё равно потребуется обрезать сплайн по границе узла. Кроме того, как и в предыдущем случае, этот способ не сработает, если ребро указывает на порт узла.
- Настроить входной граф так, чтобы для всех рёбер использовались
Вывод состоит из одной строки graph, последовательности строк node — по одной на каждый узел, последовательности строк edge — по одной на каждое ребро, и завершающей строки stop. Все единицы измерения указаны в дюймах в виде чисел с плавающей точкой.
Обратите внимание, что форматы plain содержат минимум информации: по сути, они предоставляют лишь положения и размеры узлов, а также контрольные точки сплайнов рёбер. Эти форматы обычно наиболее полезны приложениям, которым нужны только эти геометрические данные и которые готовы самостоятельно добавить все графические детали. Единственные реальные преимущества этих форматов — краткость и простота разбора. Как правило, с точки зрения объёма предоставляемой информации предпочтительнее dot и xdot.
© 2025 The Graphviz Authors
Licensed under the Eclipse Public License 1.0.
https://www.graphviz.org/docs/outputs/plain/