DOT language
From Wikipedia, the free encyclopedia
DOT is a plain text graph description language. It is a simple way of describing graphs that both humans and computer programs can use. DOT graphs are typically files that end with the .dot extension.
Various programs exist to process DOT files. These programs can read DOT files and render them, or provide an interface to manipulate the graphs. One such program, dot, is used by the source code documentation generator doxygen. dot is part of the Graphviz package.
Contents |
[edit] Syntax
[edit] Undirected Graphs
At its simplest, DOT can be used to describe an undirected graph. An undirected graph shows simple relations between objects, such as 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.
graph graphname { a -- b -- c; b -- d; }
[edit] Directed Graphs
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.
digraph graphname { a -> b -> c; b -> d; }
[edit] Comments
DOT files are often generated by programs, but they can be hand edited as well. Dot supports C and C++ style comments. In addition, it ignores lines with a pound (#) symbol as their first character.
// This is a single line comment. /* This is a multi line comment. */ # Lines like this are also ignored.
[edit] Attributes
Various attributes can be applied to nodes and edges in DOT files. These attributes can control things such as color, shape, and line styles. Attributes are placed in square brackets ([]) after a statement and before the semicolon. Node attributes are placed after a statement containing only the name of the node, and no relations.
graph graphname { // 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]; }
[edit] A simple graph example
Following is an example script that describes the bonding structure of an ethane molecule. This is an undirected graph and contains node attribues as explained above.
graph ethane { C_0 -- H_0 [type=s]; C_0 -- H_1 [type=s]; C_0 -- H_2 [type=s]; C_0 -- C_1 [type=s]; C_1 -- H_3 [type=s]; C_1 -- H_4 [type=s]; C_1 -- H_5 [type=s]; }
[edit] Layout Programs
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:
- Graphviz - A collection of libraries and utilities to manipulate and render graphs (see Graphviz architecture for a list of the layout programs within Graphviz)
- Grappa - A Java based graph editor and viewer based on Graphviz
[edit] See also
- Graphviz
- Graph (data structure)
- lisp2dot tool to convert Lisp programming language like program trees to DOT language. Designed for use with genetic programming.