DOT (мова)

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Мова DOT)
Перейти до навігації Перейти до пошуку
DOT
Розробник Bell Laboratories[1]
URL довідки користувача graphviz.org/doc/info/lang.html
graphviz.org/doc/info/attrs.html
graphviz.org/doc/info/shapes.html
graphviz.org/doc/info/arrows.html
graphviz.org/doc/info/colors.html
MIME-тип інтернет-вмісту text/vnd.graphviz[2]
Розширення файлу .gv[2] або .dot[2]
CMNS: DOT у Вікісховищі

DOT — це текстова мова опису графів. Вона достатньо проста як для людей, так і для комп'ютерів. Графи DOT це зазвичай Файли з розширенням .gv (чи .dot).

DOT-файли можуть оброблятись різними програмами. Такі як dot, neato, twopi, circo, fdp, та sfdp, прочитають DOT файл і відтворять його в графічній формі. Інші, як наприклад gvpr, gc, accyclic, ccomps, sccmap, та tred, після читання графу будуть виконувати над ним різні обчислення. А такі програми як GVedit, lefty, dotty, та grappa, надають інтерактивний інтерфейс. Більшість програм є частиною пакету Graphviz.

Синтаксис

[ред. | ред. код]

Типи графів

[ред. | ред. код]

Ненаправлені

[ред. | ред. код]
Ненаправлений граф

Ключове слово graph використовують для створення нового графу, і його елементи описуються всередині фігурних дужок. Подвійний дефіс використовують щоб показати відношення між вершинами.

 
 graph graphname {
     a -- b -- c;
     b -- d;
 }

Направлені графи

[ред. | ред. код]
Направлений граф

Подібно до ненаправлених графів, мова DOT може описувати направлені, такі як блок-схеми та дерева залежностей. Синтакс такий самий, тільки на початку використовується ключове слово digraph (англ. directed graph), і зв'язки між вершинами позначаються стрілочками (->).

 digraph graphname {
     a -> b -> c;
     b -> d;
 }

Атрибути

[ред. | ред. код]
Граф з атрибутами

Вершинам та ребрам можна присвоювати певні атрибути, які будуть змінювати вигляд графу, такі як колір, форма, чи стиль ліній. В квадратні дужки перед крапкою з комою ([]) поміщається одна, чи більше пар ім'я-значення, розділених комою. Щоб призначити атрибути для вершин, їх розміщують в рядку що містить тільки ім'я вершини, без відношень.

 graph graphname {
     // Атрибут label можна використовувати щоб змінювати підпис вершини
     a [label="Foo"];
     // тут змінюємо форму вершини
     b [shape=box];
     // А тут змінюємо вигляд ребер.
     a -- b -- c [color=blue];
     b -- d [style=dotted];
 }

Коментарі

[ред. | ред. код]

Dot підтримує коментарі як в стилі C, так і в стилі скриптових мов:

 // Однорядковий коментар
 /* А це -
    багаторядковий
    коментар. */
 # І це коментар

Програми малювання

[ред. | ред. код]

Мова DOT описує граф, але не надає можливостей для його відображення. Існує кілька програм, що можуть використовуватись для перегляду та маніпулювання графами в мові DOT:

  • Graphviz — колекція програм для обробки графів в мові DOT
  • Grappa — Java редактор та переглядач графів, що базується на Graphviz
  • Beluging — Переглядач графів що базується на Python та Google Cloud. [1]
  • Tulip [Архівовано 13 квітня 2009 у Wayback Machine.] може імпортувати файли dot для аналізу.
  • OmniGraffle може імпортувати підмножину DOT, та створює документ який можна редагувати. (Результат можна знову зберегти в DOT)
  • ZGRViewer, переглядач GraphViz/DOT (Посилання [Архівовано 12 червня 2018 у Wayback Machine.])
  • VizierFX, бібліотека рендерингу графів для Flex. Посилання.

Обмеження

[ред. | ред. код]
Зображення що намальоване неакуратно
Після деяких переміщень вершин, та зміни розміру шрифту зображення виглядає правильніше.

Хоча можливо явно задавати розміщення графу з DOT, але не всі інструменти що використовують мову 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 } 
}

Зображення вище трохи скошене, і мітка «(g o f)'» розташована не там де потрібно.

Це можна виправити за допомогою Inkscape чи іншого SVG редактора. В деяких випадках, це також можна виправити використовуючи атрибут pos для явного задання позиції.

Інші формати зберігання графів

[ред. | ред. код]

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. https://reference.wolfram.com/language/ref/format/DOT.html
  2. а б в https://www.iana.org/assignments/media-types/text/vnd.graphviz — 2008.
  3. Mermaid | Diagramming and charting tool. mermaid.js.org. Процитовано 17 січня 2023.

Посилання

[ред. | ред. код]