DOT (язык описания графов)
![]() | Эта статья написана как руководство или руководство . ( апрель 2023 г. ) |
Расширения имен файлов | .gv |
---|---|
Тип интернет-СМИ | текст/vnd.graphviz |
Тип формата | графа Язык описания |
Открытый формат ? | Да |
DOT — язык описания графов , разработанный в рамках проекта Graphviz . Графики DOT обычно хранятся в виде файлов с расширением .gv
или .dot
расширение имени файла — .gv
предпочтительнее, чтобы избежать путаницы с .dot
расширение, используемое версиями Microsoft Word до 2007 года. [1] dot
это также название основной программы для обработки файлов DOT в пакете Graphviz.
Различные программы могут обрабатывать файлы DOT. Некоторые из них, такие как dot , neato , twopi , circo , fdp и sfdp , могут читать файл DOT и отображать его в графической форме. Другие, такие как gvpr , gc , acyclic , ccomps , sccmap и tred , читают файлы DOT и выполняют вычисления на представленном графе. Наконец, другие, такие как lefty , dotty и grappa , предоставляют интерактивный интерфейс. Инструмент GVedit сочетает в себе текстовый редактор и неинтерактивную программу просмотра. Большинство программ являются частью пакета Graphviz или используют его для внутренних целей.
DOT исторически является аббревиатурой от «DAG завтрашнего дня», как преемник формата DAG и программы dag , которая обрабатывала только направленные ациклические графы . [2]
Синтаксис [ править ]
Типы графиков [ править ]
Неориентированные графики [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/39/DotLanguageUndirected.svg/220px-DotLanguageUndirected.svg.png)
В самом простом случае DOT можно использовать для описания неориентированного графа . Неориентированный граф показывает простые отношения между объектами, например взаимную дружбу между людьми. graph
Ключевое слово используется для начала нового графа, а узлы описываются в фигурных скобках. Двойной дефис ( --
) используется для отображения отношений между узлами.
// Имя графа и точки с запятой не являются обязательными
Graphgraphname . {
a -- b -- c ;
б -- г ;
}
Ориентированные графы [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/DotLanguageDirected.svg/220px-DotLanguageDirected.svg.png)
Подобно неориентированным графам, DOT может описывать ориентированные графы , такие как блок-схемы и деревья зависимостей . Синтаксис тот же, что и для неориентированных графов, за исключением digraph
Ключевое слово используется для начала графика, а стрелка (->) используется для отображения связей между узлами.
орграф имя_графа {
a -> b -> c ;
б -> д ;
}
Атрибуты [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/52/DotLanguageAttributes.svg/220px-DotLanguageAttributes.svg.png)
К графам, узлам и ребрам в файлах DOT можно применять различные атрибуты. [3] Эти атрибуты могут управлять такими аспектами, как цвет, форма и стили линий. Для узлов и ребер одна или несколько пар атрибут-значение помещаются в квадратные скобки. []
после оператора и перед точкой с запятой (что необязательно). Атрибуты графа указываются в виде прямых пар атрибут-значение под элементом графа, где несколько атрибутов разделяются запятой или с помощью нескольких наборов квадратных скобок, а атрибуты узла помещаются после оператора, содержащего только имя узла, но не имя узла. отношения между точками.
Graph Graphname {
// Этот атрибут применяется к самому графику
size = "1,1" ;
// Атрибут label можно использовать для изменения метки узла
a [ label = "Foo" ];
// Здесь меняется форма узла.
б [ форма = коробка ];
// Оба этих края имеют разные свойства линий
a -- b -- c [ color = blue ];
б -- d [ стиль = пунктирный ];
// [style=invis] скрывает узел.
}
Поддерживаются HTML-подобные метки, хотя изначально Graphviz их не обрабатывал. [4]
Комментарии [ править ]
DOT поддерживает в стиле C и C++ однострочные и многострочные комментарии . Кроме того, он игнорирует строки с символом числового знака. #
в качестве их первого символа, как и во многих интерпретируемых языках.
// Это однострочный комментарий.
/* Это
несколько строк
комментарий. */
# Подобные строки также игнорируются.
Простой пример [ править ]
![](http://upload.wikimedia.org/wikipedia/en/thumb/a/ab/DottyRenderingofEthaneMolecule.png/225px-DottyRenderingofEthaneMolecule.png)
dotty
Ниже приведен пример сценария, описывающего структуру связи молекулы этана . Это неориентированный граф, содержащий атрибуты узлов, как описано выше.
граф этан {
C_0 -- H_0 [ тип = s ];
C_0 -- H_1 [ тип = s ];
C_0 -- H_2 [ тип = s ];
C_0 -- C_1 [ тип = s ];
C_1 -- H_3 [ тип = s ];
C_1 -- H_4 [ тип = s ];
C_1 -- H_5 [ тип = s ];
}
Программы верстки [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c6/Huffman_%28To_be_or_not_to_be%29.svg/220px-Huffman_%28To_be_or_not_to_be%29.svg.png)
Язык DOT определяет граф, но не предоставляет средств для его отображения. Существует несколько программ, которые можно использовать для визуализации, просмотра и управления графиками на языке DOT:
Общие [ править ]
- Graphviz — набор утилит и библиотек CLI для управления графиками и их рендеринга в различные форматы, такие как SVG , PDF , PNG и т. д.
dot
– Инструмент CLI для преобразования между.dot
и другие форматы
JavaScript [ править ]
- Canviz — библиотека JavaScript для рендеринга файлов DOT. [5]
- d3-graphviz — библиотека JavaScript , основанная на Viz.js и D3.js , которая отображает графики DOT и поддерживает анимированные переходы между графиками и интерактивные манипуляции с графиками. [6]
- Vis.js — библиотека JavaScript , принимающая DOT в качестве входных данных для сетевых графиков. [7]
- Viz.js — JavaScript-порт Graphviz, предоставляющий простую оболочку для его использования в браузере.
- hpcc-js/wasm Graphviz — быстрая библиотека WASM для Graphviz, аналогичная Viz.js. [8]
Ява [ править ]
- Gephi — интерактивная платформа визуализации и исследования всех видов сетей и сложных систем, динамических и иерархических графиков.
- Граппа — частичный порт Graphviz на Java.
- Graphviz-java — частичный порт Graphviz с открытым исходным кодом на Java , доступный на github.com.
- ZGRViewer – просмотрщик DOT [9]
Другое [ править ]
- Beluging — Python и Google Cloud Platform. средство просмотра расширений DOT и Beluga на базе
- dot2tex — программа для преобразования файлов из DOT в PGF/TikZ или PSTricks , оба из которых визуализируются в LaTeX. [10]
- OmniGraffle — приложение для создания цифровых иллюстраций для macOS , которое может импортировать подмножество DOT, создавая редактируемый документ (но результат нельзя экспортировать обратно в DOT).
- Tulip — программная платформа на C++ , которая может импортировать файлы DOT для анализа. [11]
- VizierFX — библиотека рендеринга графов Apache Flex в ActionScript. [12]
Ограничения [ править ]
Хотя формат DOT позволяет пользователю указывать детали макета с помощью позиционных атрибутов, большинство инструментов полагаются на автоматизированные алгоритмы макета. Эти алгоритмы являются лучшими и иногда приводят к нежелательным результатам.
Например:
Проблемы с представлением изображения под названием «Изображение, которое кажется неправильно визуализированным». Квадрат справа не является идеальным квадратом , и некоторые метки не совпадают со стрелками (например, (gof)').
Это можно исправить с помощью редактора векторной графики . В некоторых случаях это также можно исправить с помощью pos
атрибут для указания позиции и weight
атрибут для возведения графика в квадрат.
Примечания [ править ]
- ^ «Расширение файла .dot или .gv?» . marc.info . Проверено 8 марта 2011 г.
- ^ « имя-точка (этимология)» . Графвиз . 14 ноября 2022 г. Проверено 10 июля 2023 г.
- ^ «Атрибуты узла, ребра и графа» . www.graphviz.org . Проверено 12 мая 2017 г.
- ^ «Формы узлов: HTML-подобные метки» . www.graphviz.org . Проверено 12 мая 2017 г.
- ^ «canviz: графвиз на холсте» . Проверено 2 июня 2017 г.
- ^ «GitHub — magjac/d3-graphviz: DOT-рендеринг Graphviz и анимированные переходы с использованием D3» . github.com . Проверено 6 июня 2018 г.
- ^ «Импортировать данные на языке DOT» . вис.js. Проверено 22 декабря 2018 г.
- ^ «hpcc-js/wasm» . Проверено 21 октября 2020 г.
- ^ «ЗГРВивер» . zvtm.sourceforge.net . Проверено 12 мая 2017 г.
- ^ «dot2tex — конвертер Graphviz в LaTeX» . dot2tex.readthedocs.io . 01.11.2019.
- ^ «Программное обеспечение для визуализации данных – Tulip» . tulip.labri.fr . Проверено 12 мая 2017 г.
- ^ «GitHub — gvhung/vizierfx: автоматически экспортируется из code.google.com/p/vizierfx» . github.com . Проверено 12 мая 2017 г.
См. также [ править ]
![](http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)
Внешние ссылки [ править ]
- Учебное пособие и спецификация DOT
- Graphviz Online : мгновенное преобразование и визуализация описаний DOT
- Библиотека графов повышения
- lisp2dot или Tree2dot : конвертировать деревья программ, подобные языку программирования Lisp, в язык DOT (предназначенный для использования в генетическом программировании ).