GitLab Commit is coming up on August 3-4. Learn how to innovate together using GitLab, the DevOps platform. Register for free: gitlabcommitvirtual2021.com

Commit 77ec484e authored by Mark Hansen's avatar Mark Hansen
Browse files

Remove folder layer, add in per-output-format pages

Now each output format has its own top-level page, and is present in the left-nav.

While making this change, I found I had one too many layers of hierarchy, and I could simplify things a lot by moving docs up one level, so the links are /docs/output/bmp/ rather than /docs/documentation/output/bmp/.
parent 3f28d8d4
---
title: Misc
type: docs
toc_hide: true
---
---
title: Graphviz
aliases:
# Fixes a broken Home Page link from Gallery pages.
- /_pages/
type: docs
---
![Graphviz logo -- arrows pointing between circles on graph paper, with magnifying glass on top](/Resources/app.png)
Please join the [Graphviz forum](https://forum.graphviz.org) to ask
questions and discuss Graphviz.
## What is Graphviz?
Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics, software engineering, database and web design, machine learning, and in visual interfaces for other technical domains.
<img alt="Cluster" src="/Gallery/directed/cluster.png" style="display:block; height:289px; margin-left:auto; margin-right:auto; width:150px" />
## Features
The Graphviz layout programs take descriptions of graphs in a simple text language, and make diagrams in useful formats, such as images and SVG for web pages; PDF or Postscript for inclusion in other documents; or display in an interactive graph browser. Graphviz has many useful features for concrete diagrams, such as options for colors, fonts, tabular node layouts, line styles, hyperlinks, and custom shapes.
## Roadmap
**dot -** "hierarchical" or layered drawings of directed graphs. This is the default tool to use if edges have directionality.
**neato -** "spring model" layouts. This is the default tool to use if the graph is not too large (about 100 nodes) and you don&#39;t know anything else about it. Neato attempts to minimize a global energy function, which is equivalent to statistical multi-dimensional scaling.
**fdp -** "spring model" layouts similar to those of neato, but does this by reducing forces rather than working with energy.
**sfdp -** multiscale version of fdp for the layout of large graphs.
**twopi -** radial layouts, after Graham Wills 97. Nodes are placed on concentric circles depending their distance from a given root node.
**circo -** circular layout, after Six and Tollis 99, Kauffman and Wiese 02. This is suitable for certain diagrams of multiple cyclic structures, such as certain telecommunications networks.
## Download
The current release of Graphviz can be downloaded here: [Download](/download)
The code base is stored [here](https://gitlab.com/graphviz/graphviz/) on
GitLab.
## Documentation
Documentation is available in the released package and from here: [Documentation](/documentation)
## Discussions
You can post questions and comments in the [Graphviz forum](https://forum.graphviz.org).
## Bug And Issue Tracking
You can report or view Graphviz bugs and issues by visiting the Graphviz [Issues](https://gitlab.com/graphviz/graphviz/issues) page.
---
cascade:
toc_hide: true
---
---
title: About
url: /about/
aliases:
# We want to redirect from /About.php. We need ".php.html" else the
# redirect page is downloaded to ~/Downloads/ rather than shown in browser. See:
......@@ -8,6 +7,7 @@ aliases:
- /About.php.html
- /News.php.html
weight: 1
type: docs
---
......
......@@ -8,7 +8,7 @@ types:
- string
used_by: G
---
A string in the [xdot format](output.html#d:xdot) specifying an arbitrary background.
A string in the [`xdot` format](/docs/outputs/dot/) specifying an arbitrary background.
During rendering, the canvas is first filled as described in the
[`bgcolor` attribute](#d:bgcolor).
......
......@@ -3,6 +3,7 @@ title: Building
url: /doc/build.html
aliases:
- /_pages/doc/build.html
type: docs
---
## External packages
......
......@@ -3,6 +3,7 @@ title: Windows
url: /doc/winbuild.html
aliases:
- /_pages/doc/winbuild.html
type: docs
---
For building on Windows:
......
---
title: Contact
url: /contact/
aliases:
# We want to redirect from /MailingList.php. We need ".php.html" else the
# redirect page is downloaded to ~/Downloads/ rather than shown in browser. See:
# https://github.com/jekyll/jekyll-redirect-from/issues/145#issuecomment-392277818
- /MailingList.php.html
weight: 10
type: docs
---
Please join the [Graphviz forum](https://forum.graphviz.org) to ask questions and discuss Graphviz.
......
---
title: Credits
url: /credits/
weight: 8
type: docs
---
......
---
title: Graphviz
url: /
title: Documentation
url: /documentation/
weight: 4
aliases:
# Fixes a broken Home Page link from Gallery pages.
- /_pages/
# This page mostly duplicates the list below.
# We want to redirect from /Documentation.php. We need ".php.html" else the
# redirect page is downloaded to ~/Downloads/ rather than shown in browser. See:
# https://github.com/jekyll/jekyll-redirect-from/issues/145#issuecomment-392277818
- /Documentation.php.html
- /doc/info/
no_list: true
menu:
main:
weight: 20
pre: "<i class='fas fa-book'></i>"
---
![Graphviz logo -- arrows pointing between circles on graph paper, with magnifying glass on top](/Resources/app.png)
Please join the [Graphviz forum](https://forum.graphviz.org) to ask
questions and discuss Graphviz.
## What is Graphviz?
Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics, software engineering, database and web design, machine learning, and in visual interfaces for other technical domains.
<img alt="Cluster" src="/Gallery/directed/cluster.png" style="display:block; height:289px; margin-left:auto; margin-right:auto; width:150px" />
## Features
The Graphviz layout programs take descriptions of graphs in a simple text language, and make diagrams in useful formats, such as images and SVG for web pages; PDF or Postscript for inclusion in other documents; or display in an interactive graph browser. Graphviz has many useful features for concrete diagrams, such as options for colors, fonts, tabular node layouts, line styles, hyperlinks, and custom shapes.
## Roadmap
**dot -** "hierarchical" or layered drawings of directed graphs. This is the default tool to use if edges have directionality.
**neato -** "spring model" layouts. This is the default tool to use if the graph is not too large (about 100 nodes) and you don&#39;t know anything else about it. Neato attempts to minimize a global energy function, which is equivalent to statistical multi-dimensional scaling.
**fdp -** "spring model" layouts similar to those of neato, but does this by reducing forces rather than working with energy.
**sfdp -** multiscale version of fdp for the layout of large graphs.
**twopi -** radial layouts, after Graham Wills 97. Nodes are placed on concentric circles depending their distance from a given root node.
**circo -** circular layout, after Six and Tollis 99, Kauffman and Wiese 02. This is suitable for certain diagrams of multiple cyclic structures, such as certain telecommunications networks.
## Download
The current release of Graphviz can be downloaded here: [Download](/download)
The code base is stored [here](https://gitlab.com/graphviz/graphviz/) on
GitLab.
## Documentation
Documentation is available in the released package and from here: [Documentation](/documentation)
## Discussions
You can post questions and comments in the [Graphviz forum](https://forum.graphviz.org).
## Bug And Issue Tracking
You can report or view Graphviz bugs and issues by visiting the Graphviz [Issues](https://gitlab.com/graphviz/graphviz/issues) page.
## On-line reference pages
* [The DOT Language](/doc/info/lang.html)
* [Command-line Usage](/doc/info/command.html)
* [Output Formats](/doc/info/output.html)
* [Node, Edge and Graph Attributes](/doc/info/attrs.html)
* [Node Shapes](/doc/info/shapes.html)
* [Arrow Shapes](/doc/info/arrows.html)
* [Colors](/doc/info/colors.html)
## User's Guides
**NOTE:** The first two documents are not current with the features
and details of Graphviz. They can serve as tutorials for understanding how
to use Graphviz, but the most up-to-date documentation is provided in the
on-line pages listed above.
* [dot](/pdf/dotguide.pdf)
* [neato](/pdf/neatoguide.pdf)
* [lefty](/pdf/leftyguide.pdf)
* [dotty](/pdf/dottyguide.pdf)
* [Cgraph library tutorial](/pdf/cgraph.pdf)
* [Using Graphviz as a library](/pdf/libguide.pdf)
* [Using Graphviz as a library (pre-2.30 version)](/pdf/oldlibguide.pdf)
* [Adding a new layout](/doc/addingLayout.txt)
## Sample Programs using Graphviz
* [demo.c](/dot.demo/demo.c)
* [dot.c](/dot.demo/dot.c)
* [example.c](/dot.demo/example.c)
* [simple.c](/dot.demo/simple.c)
* [Makefile](/dot.demo/Makefile)
## Layout manual pages
* [circo](/pdf/dot.1.pdf)
* [dot](/pdf/dot.1.pdf)
* [fdp](/pdf/dot.1.pdf)
* [neato](/pdf/dot.1.pdf)
* [osage](/pdf/osage.1.pdf)
* [patchwork](/pdf/patchwork.1.pdf)
* [sfdp](/pdf/dot.1.pdf)
* [twopi](/pdf/dot.1.pdf)
## Tool manual pages
* [acyclic](/pdf/acyclic.1.pdf)
* [bcomps](/pdf/bcomps.1.pdf)
* [cluster](/pdf/cluster.1.pdf)
* [ccomps](/pdf/ccomps.1.pdf)
* [diffimg](/pdf/diffimg.1.pdf)
* [dijkstra](/pdf/dijkstra.1.pdf)
* [dotty](/pdf/dotty.1.pdf)
* [edgepaint](/pdf/edgepaint.1.pdf)
* [gc](/pdf/gc.1.pdf)
* [gml2gv](/pdf/gml2gv.1.pdf)
* [graphml2gv](/pdf/graphml2gv.1.pdf)
* [gv2gxl](/pdf/gxl2gv.1.pdf)
* [gvcolor](/pdf/gvcolor.1.pdf)
* [gvedit](/pdf/gvedit.1.pdf)
* [gvgen](/pdf/gvgen.1.pdf)
* [gvmap](/pdf/gvmap.1.pdf)
* [gvpack](/pdf/gvpack.1.pdf)
* [gvpr](/pdf/gvpr.1.pdf)
* [gxl2gv](/pdf/gxl2gv.1.pdf)
* [lefty](/pdf/lefty.1.pdf)
* [lneato](/pdf/lneato.1.pdf)
* [mingle](/pdf/mingle.1.pdf)
* [mm2gv](/pdf/mm2gv.1.pdf)
* [nop](/pdf/nop.1.pdf)
* [sccmap](/pdf/sccmap.1.pdf)
* [smyrna](/pdf/smyrna.1.pdf)
* [tred](/pdf/tred.1.pdf)
* [unflatten](/pdf/unflatten.1.pdf)
* [vimdot](/pdf/vimdot.1.pdf)
## C libraries
* [cdt](/pdf/cdt.3.pdf)
* [cgraph](/pdf/cgraph.3.pdf)
* [gvc](/pdf/gvc.3.pdf)
* [pack](/pdf/pack.3.pdf)
* [pathplan](/pdf/pathplan.3.pdf)
* [xdot](/pdf/xdot.3.pdf)
## Tcl/tk libraries
* [gdtclft.3tcl](/pdf/gdtclft.3tcl.pdf)
* [tcldot.3tcl](/pdf/tcldot.3tcl.pdf)
* [tkspline.3tk](/pdf/tkspline.3tk.pdf)
## Scripting APIs
* [gv.3guile](/pdf/gv.3guile.pdf)
* [gv.3java](/pdf/gv.3java.pdf)
* [gv.3perl](/pdf/gv.3perl.pdf)
* [gv.3php](/pdf/gv.3php.pdf)
* [gv.3python](/pdf/gv.3python.pdf)
* [gv.3ruby](/pdf/gv.3ruby.pdf)
* [gv.3tcl](/pdf/gv.3tcl.pdf)
......@@ -30,12 +30,12 @@ Set a default edge attribute, with default _value_ = `true`.
### `-T`_format_\[:_renderer_\[:_formatter_\]\] {id="d:T"}
Set output language to one of the [supported formats](output.html).
By default, [attributed dot](output.html#d:dot) is produced.
By default, [attributed dot](/docs/outputs/dot/) is produced.
Depending on how Graphviz was built, there may be multiple renderers for
generating a particular output format, and multiple formatters for
creating the final output. For example, a typical installation
can produce [PNG](output.html#d:png)
can produce [PNG](/docs/outputs/png/)
output using either the Cairo or GD library. The desired rendering engine
can be specified after a colon. If there are multiple formatting engines
available, the desired one can be specified in a similar fashion after
......@@ -137,10 +137,10 @@ drawing.
### `-y`
By default, the coordinate system used in generic output formats,
such as [attributed dot](output.html#d:dot),
[extended dot](output.html#d:xdot),
[plain](output.html#d:plain) and
[plain-ext](output.html#d:plain-ext),
such as [attributed dot](/docs/outputs/dot/),
[extended dot](/docs/outputs/dot/),
[plain](/docs/outputs/plain/) and
[plain-ext](/docs/outputs/plain/),
is the standard cartesian system with the origin in the lower left corner,
and with increasing y coordinates as points move from bottom to top.
If the `-y` flag is used, the coordinate system is inverted,
......
---
title: Documentation
url: /documentation/
weight: 4
aliases:
# We want to redirect from /Documentation.php. We need ".php.html" else the
# redirect page is downloaded to ~/Downloads/ rather than shown in browser. See:
# https://github.com/jekyll/jekyll-redirect-from/issues/145#issuecomment-392277818
- /Documentation.php.html
- /doc/info/
no_list: true
menu:
main:
weight: 20
pre: "<i class='fas fa-book'></i>"
---
## On-line reference pages
* [The DOT Language](/doc/info/lang.html)
* [Command-line Usage](/doc/info/command.html)
* [Output Formats](/doc/info/output.html)
* [Node, Edge and Graph Attributes](/doc/info/attrs.html)
* [Node Shapes](/doc/info/shapes.html)
* [Arrow Shapes](/doc/info/arrows.html)
* [Colors](/doc/info/colors.html)
## User's Guides
**NOTE:** The first two documents are not current with the features
and details of Graphviz. They can serve as tutorials for understanding how
to use Graphviz, but the most up-to-date documentation is provided in the
on-line pages listed above.
* [dot](/pdf/dotguide.pdf)
* [neato](/pdf/neatoguide.pdf)
* [lefty](/pdf/leftyguide.pdf)
* [dotty](/pdf/dottyguide.pdf)
* [Cgraph library tutorial](/pdf/cgraph.pdf)
* [Using Graphviz as a library](/pdf/libguide.pdf)
* [Using Graphviz as a library (pre-2.30 version)](/pdf/oldlibguide.pdf)
* [Adding a new layout](/doc/addingLayout.txt)
## Sample Programs using Graphviz
* [demo.c](/dot.demo/demo.c)
* [dot.c](/dot.demo/dot.c)
* [example.c](/dot.demo/example.c)
* [simple.c](/dot.demo/simple.c)
* [Makefile](/dot.demo/Makefile)
## Layout manual pages
* [circo](/pdf/dot.1.pdf)
* [dot](/pdf/dot.1.pdf)
* [fdp](/pdf/dot.1.pdf)
* [neato](/pdf/dot.1.pdf)
* [osage](/pdf/osage.1.pdf)
* [patchwork](/pdf/patchwork.1.pdf)
* [sfdp](/pdf/dot.1.pdf)
* [twopi](/pdf/dot.1.pdf)
## Tool manual pages
* [acyclic](/pdf/acyclic.1.pdf)
* [bcomps](/pdf/bcomps.1.pdf)
* [cluster](/pdf/cluster.1.pdf)
* [ccomps](/pdf/ccomps.1.pdf)
* [diffimg](/pdf/diffimg.1.pdf)
* [dijkstra](/pdf/dijkstra.1.pdf)
* [dotty](/pdf/dotty.1.pdf)
* [edgepaint](/pdf/edgepaint.1.pdf)
* [gc](/pdf/gc.1.pdf)
* [gml2gv](/pdf/gml2gv.1.pdf)
* [graphml2gv](/pdf/graphml2gv.1.pdf)
* [gv2gxl](/pdf/gxl2gv.1.pdf)
* [gvcolor](/pdf/gvcolor.1.pdf)
* [gvedit](/pdf/gvedit.1.pdf)
* [gvgen](/pdf/gvgen.1.pdf)
* [gvmap](/pdf/gvmap.1.pdf)
* [gvpack](/pdf/gvpack.1.pdf)
* [gvpr](/pdf/gvpr.1.pdf)
* [gxl2gv](/pdf/gxl2gv.1.pdf)
* [lefty](/pdf/lefty.1.pdf)
* [lneato](/pdf/lneato.1.pdf)
* [mingle](/pdf/mingle.1.pdf)
* [mm2gv](/pdf/mm2gv.1.pdf)
* [nop](/pdf/nop.1.pdf)
* [sccmap](/pdf/sccmap.1.pdf)
* [smyrna](/pdf/smyrna.1.pdf)
* [tred](/pdf/tred.1.pdf)
* [unflatten](/pdf/unflatten.1.pdf)
* [vimdot](/pdf/vimdot.1.pdf)
## C libraries
* [cdt](/pdf/cdt.3.pdf)
* [cgraph](/pdf/cgraph.3.pdf)
* [gvc](/pdf/gvc.3.pdf)
* [pack](/pdf/pack.3.pdf)
* [pathplan](/pdf/pathplan.3.pdf)
* [xdot](/pdf/xdot.3.pdf)
## Tcl/tk libraries
* [gdtclft.3tcl](/pdf/gdtclft.3tcl.pdf)
* [tcldot.3tcl](/pdf/tcldot.3tcl.pdf)
* [tkspline.3tk](/pdf/tkspline.3tk.pdf)
## Scripting APIs
* [gv.3guile](/pdf/gv.3guile.pdf)
* [gv.3java](/pdf/gv.3java.pdf)
* [gv.3perl](/pdf/gv.3perl.pdf)
* [gv.3php](/pdf/gv.3php.pdf)
* [gv.3python](/pdf/gv.3python.pdf)
* [gv.3ruby](/pdf/gv.3ruby.pdf)
* [gv.3tcl](/pdf/gv.3tcl.pdf)
---
title: Output Formats
url: /doc/info/output.html
aliases:
- /doc/info/output.html
stylesheet: output.css
weight: 3
cascade:
type: output
---
The output format is specified with the **-T**_lang_
The output format is specified with the <code>**-T**_lang_</code>
flag on the [command line](command.html), where _lang_
is one of the parameters listed below.
is one of the parameters listed above.
The formats actually available in a given Graphviz system depend on
how the system was built and the presence of additional libraries.
......@@ -17,26 +20,18 @@ flag for additional information.
Note that the internal coordinate system has the origin
in the lower left corner.
Thus, positions in the
[canon](#d:canon),
[dot](#d:dot),
[xdot](#d:xdot),
[plain](#d:plain), and
[plain-ext](#d:plain-ext)
[canon](/docs/outputs/dot/),
[dot](/docs/outputs/dot/),
[xdot](/docs/outputs/dot/),
[plain](/docs/outputs/plain/), and
[plain-ext](/docs/outputs/plain/)
formats need to be interpreted in this manner.
{{<outputs_toc>}}
---
## Format Descriptions
{{<format_descriptions>}}
* * *
## Image Formats
The [image](attrs.html#a:image) and [shapefile](attrs.html#a:shapefile) attributes specify an image file to be included
The [`image`](attrs.html#a:image) and [`shapefile`](attrs.html#a:shapefile) attributes specify an image file to be included
as part of the final diagram. Not all image formats can be read. In addition,
even if read, not all image formats can necessarily be used in a given
output format.
......@@ -49,7 +44,7 @@ plugin library.
This presents the most general case. A given installation may not provide
one of the plugins, in which case, that transformation is not possible.
<IMG style="width: 100%;" SRC="plugins.png">
<IMG style="width: 100%;" SRC="/doc/info/plugins.png">
---
......
---
name: Windows Bitmap Format
title: BMP
description: Windows Bitmap
params:
- bmp
---
......
---
name: DOT
title: DOT
description: Graphviz Language
params:
- canon
- dot
......@@ -10,33 +11,32 @@ params:
---
These formats produce output in the
[dot language](lang.html).
Using **canon** produces a prettyprinted version of the input,
Using `canon` produces a prettyprinted version of the input,
with no layout performed.
The **dot** option corresponds to attributed dot output,
The `dot` option corresponds to attributed dot output,
and is the default output format.
It reproduces the input, along with layout information for the graph.
In particular, a [bb](attrs.html#d:bb) attribute is
In particular, a [`bb`](attrs.html#d:bb) attribute is
attached to the graph, specifying the bounding box of the drawing.
If the graph has a label, its position is specified by the
[lp](attrs.html#d:lp) attribute.
[`lp`](attrs.html#d:lp) attribute.
Each node gets [pos](attrs.html#d:pos),
Each node gets [pos](attrs.html#d:pos),
[width](attrs.html#d:width) and
Each node gets [`pos`](attrs.html#d:pos),
[`width`](attrs.html#d:width) and
the record rectangles are given in the
[rects](attrs.html#d:rects) attribute.
[`rects`](attrs.html#d:rects) attribute.
If the node is a polygon and the
[vertices](attrs.html#d:vertices) attribute is defined, this
[`vertices`](attrs.html#d:vertices) attribute is defined, this
attribute contains the vertices of the node.
Every edge is
assigned a [pos](attrs.html#d:pos) attribute,
assigned a [`pos`](attrs.html#d:pos) attribute,
and if the edge has a label, the label position
is given in [lp](attrs.html#d:lp).
is given in [`lp`](attrs.html#d:lp).
The **xdot** format extends the
**dot** format by providing much more detailed information about
The `xdot` format extends the
`dot` format by providing much more detailed information about
how graph components are drawn. It relies on additional attributes
for nodes, edges and graphs.
......@@ -94,35 +94,44 @@ b n x₁ y₁ ... xₙ yₙ
T x y j w n -<I>b₁b₂...bₙ</I>
: Text drawn using the baseline point (x,y). The text consists of the
n bytes following '-'. The text should be left-aligned (centered,
n bytes following `-`. The text should be left-aligned (centered,
right-aligned) on the point if j is -1 (0, 1), respectively. The value
w gives the width of the text as computed by the library.
t f
: Set font characteristics. The integer f is the OR of BOLD=1, ITALIC=2, UNDERLINE=4, SUPERSCRIPT=8, SUBSCRIPT=16, (1.5) STRIKE-THROUGH=32 (1.6),
and OVERLINE=64 (1.7).
: Set font characteristics. The integer f is the OR of: