Graphviz is a program to generate diagrams of graph structures. It has its own "dot" language and the general intent is that you programmatically generating the inputs for graphviz.
In the words of the description from the homepage:
"Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. Automatic graph drawing has many important applications in software engineering, database and web design, networking, and in visual interfaces for many other domains. …
In practice, graphs are usually generated from an external data sources, but they can also be created and edited manually, either as raw text files or within a graphical editor. (Graphviz was not intended to be a Visio replacement, so it is probably frustrating to try to use it that way.) "
Graphviz looks at nodes and edges (the connections between the nodes), applies various attributes, then generates a graphic in one of many formats. You can apply attributes globally or individually to nodes and edges. The programming focus is on how to generate the edge relationships and then what attributes to apply to each node or edge.
A sample input to graphviz, looking like this:
generates a graphic like this:
http://orgmode.org/worg/org-contrib/org-exp-blocks.php More examples can be found at http://www.graphviz.org/Gallery.php.
Clusters are subgraphs, but not all subgraphs are clusters. For example, you can create subgraphs to assign the same style to edges
which are not in a contigous group of nodes. See the example given here:http://stackoverflow.com/questions/3128854/graphviz-how-to-assign-the-same-style-to-a-group-of-edges
Additional Resources for Graphviz
* Data Visualisation
* Python's Pydot
* Haskell's Data.GraphViz
cl-dot and s-dot. (There is also cl-graphviz, but I had a hard time getting to the project location)
Common data and functions for Lisp examples