DOT (graph description language)

Revision as of 01:46, 12 November 2024 by imported>Citation bot (Added website. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:Mathematical software | #UCB_Category 9/50)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

Template:Short description Template:Infobox file format

DOT is a graph description language, developed as a part of the Graphviz project. DOT graphs are typically stored as files with the .gv or .dot filename extension.gv is preferred, to avoid confusion with the .dot extension used by versions of Microsoft Word before 2007.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> dot is also the name of the main program to process DOT files in the Graphviz package.

Various programs can process DOT files. Some, such as dot, neato, twopi, circo, fdp, and sfdp, can read a DOT file and render it in graphical form. Others, such as gvpr, gc, acyclic, ccomps, sccmap, and tred, read DOT files and perform calculations on the represented graph. Finally, others, such as lefty, dotty, and grappa, provide an interactive interface. The GVedit tool combines a text editor and a non-interactive viewer. Most programs are part of the Graphviz package or use it internally.

DOT is historically an acronym for "DAG of tomorrow", as the successor to a DAG format and a dag program which handled only directed acyclic graphs.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

SyntaxEdit

Graph typesEdit

Undirected graphsEdit

File:DotLanguageUndirected.svg
An undirected graph

At its simplest, DOT can be used to describe an undirected graph. An undirected graph shows simple relations between objects, such as reciprocal friendship between people. The graph keyword is used to begin a new graph, and nodes are described within curly braces. A double-hyphen (--) is used to show relations between the nodes. <syntaxhighlight lang="dot"> // The graph name and the semicolons are optional graph graphname {

   a -- b -- c;
   b -- d;

} </syntaxhighlight>

Directed graphsEdit

Similar to undirected graphs, DOT can describe directed graphs, such as flowcharts and dependency trees. The syntax is the same as for undirected graphs, except the digraph keyword is used to begin the graph, and an arrow (->) is used to show relationships between nodes. <syntaxhighlight lang="dot"> digraph graphname {

   a -> b -> c;
   b -> d;

} </syntaxhighlight>

AttributesEdit

File:DotLanguageAttributes.svg
A graph with attributes

Various attributes can be applied to graphs, nodes and edges in DOT files.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> These attributes can control aspects such as color, shape, and line styles. For nodes and edges, one or more attribute–value pairs are placed in square brackets [] after a statement and before the semicolon (which is optional). Graph attributes are specified as direct attribute–value pairs under the graph element, where multiple attributes are separated by a comma or using multiple sets of square brackets, while node attributes are placed after a statement containing only the name of the node, but not the relations between the dots.

<syntaxhighlight lang="dot"> graph graphname {

   // This attribute applies to the graph itself
   size="1,1";
   // The label attribute can be used to change the label of a node
   a [label="Foo"];
   // Here, the node shape is changed.
   b [shape=box];
   // These edges both have different line properties
   a -- b -- c [color=blue];
   b -- d [style=dotted];
   // [style=invis] hides a node.

} </syntaxhighlight>HTML-like labels are supported, although initially Graphviz did not handle them.<ref>{{#invoke:citation/CS1|citation |CitationClass=web

}}</ref>

CommentsEdit

DOT supports C and C++ style single line and multiple line comments. In addition, it ignores lines with a number sign symbol # as their first character, like many interpreted languages.

Layout programsEdit

File:Huffman (To be or not to be).svg
Binary tree generated in Graphviz from a DOT description by an online Huffman Tree generator

The DOT language defines a graph, but does not provide facilities for rendering the graph. There are several programs that can be used to render, view, and manipulate graphs in the DOT language:

GeneralEdit

  • Graphviz – a collection of CLI utilities and libraries to manipulate and render graphs into different formats like SVG, PDF, PNG etc.
    • dot – CLI tool for conversion between <syntaxhighlight lang="text" class="" style="" inline="1">.dot</syntaxhighlight> and other formats

JavaScriptEdit

|CitationClass=web }}</ref>

  • d3-graphvizTemplate:Snda JavaScript library based on Viz.js and D3.js that renders DOT graphs and supports animated transitions between graphs and interactive graph manipulation<ref>{{#invoke:citation/CS1|citation

|CitationClass=web }}</ref>

  • Vis.jsTemplate:Snda JavaScript library that accept DOT as input for network graphs.<ref>{{#invoke:citation/CS1|citation

|CitationClass=web }}</ref>

  • Viz.js – a JavaScript port of Graphviz that provides a simple wrapper for using it in the browser.
  • hpcc-js/wasm GraphvizTemplate:Snda fast WASM library for Graphviz similar to Viz.js<ref>{{#invoke:citation/CS1|citation

|CitationClass=web }}</ref>

JavaEdit

  • GephiTemplate:Sndan interactive visualization and exploration platform for all kinds of networks and complex systems, dynamic and hierarchical graphs
  • GrappaTemplate:Snda partial port of Graphviz to Java
  • graphviz-javaTemplate:Sndan open source partial port of Graphviz to Java available from github.com
  • ZGRViewerTemplate:Snda DOT viewer<ref>{{#invoke:citation/CS1|citation

|CitationClass=web }}</ref>

OtherEdit

|CitationClass=web }}</ref>

|CitationClass=web }}</ref>

|CitationClass=web }}</ref>

NotesEdit

Template:Reflist

See alsoEdit

Template:Commonscat

External linksEdit

Template:Graph representations