glfs/general/genutils/graphviz.xml

595 lines
24 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY graphviz-download-http "http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-&graphviz-version;.tar.gz">
<!ENTITY graphviz-download-ftp " ">
<!ENTITY graphviz-md5sum "ca921b4a9bcd86da4a1092bb17a57d83">
<!ENTITY graphviz-size "4.2 MB">
<!ENTITY graphviz-buildsize "114 MB">
<!ENTITY graphviz-time "2.1 SBU">
]>
<sect1 id="graphviz" xreflabel="Graphviz-&graphviz-version;">
<?dbhtml filename="graphviz.html"?>
<sect1info>
<othername>$LastChangedBy$</othername>
<date>$Date$</date>
</sect1info>
<title>Graphviz-&graphviz-version;</title>
<indexterm zone="graphviz">
<primary sortas="a-Graphviz">Graphviz</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to Graphviz</title>
<para>The <application>Graphviz</application> package contains graph
visualization software. Graph visualization is a way of representing
structural information as diagrams of abstract graphs and networks.
<application>Graphviz</application> has several main graph layout
programs. It also has web and interactive graphical interfaces, auxiliary
tools, libraries, and language bindings.</para>
<para>The <application>Graphviz</application> layout programs take
descriptions of graphs in a simple text language, and creates diagrams in
several useful formats such as images and SVG for web pages, Postscript for
inclusion in PDF or other documents, or as objects displayed in an
interactive graph browser. (Graphviz also supports GXL, an XML dialect.) In
practice, graphs are usually generated from 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
<application>Visio</application> replacement, so it would probably be
frustrating to try to use it that way.)</para>
<para>This package is useful for automatic graph drawing which has many
important applications in software engineering, database and web design,
networking, and in visual interfaces for many other domains. Graphviz has
many useful features for concrete diagrams, such as options for colors,
fonts, tabular node layouts, line styles, hyperlinks, and custom
shapes.</para>
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>Download (HTTP): <ulink url="&graphviz-download-http;"/></para>
</listitem>
<listitem>
<para>Download (FTP): <ulink url="&graphviz-download-ftp;"/></para>
</listitem>
<listitem>
<para>Download MD5 sum: &graphviz-md5sum;</para>
</listitem>
<listitem>
<para>Download size: &graphviz-size;</para>
</listitem>
<listitem>
<para>Estimated disk space required: &graphviz-buildsize;</para>
</listitem>
<listitem>
<para>Estimated build time: &graphviz-time;</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Graphviz Dependencies</bridgehead>
<bridgehead renderas="sect4">Optional</bridgehead>
<para role="optional"><xref linkend="x-window-system"/>,
<xref linkend="pkgconfig"/>,
<xref linkend="expat"/>,
<xref linkend="libpng"/>,
<xref linkend="libjpeg"/>,
<xref linkend="freetype2"/>,
<xref linkend="fontconfig"/>,
<xref linkend="tcl"/>,
<xref linkend="tk"/>, and
<ulink url="http://www.perens.com/FreeSoftware/ElectricFence/">Electric Fence</ulink>
<!-- Commenting this out for now until an updated version of the
GD library becomes available. Graphviz uses its internal copy for now
<ulink url="http://www.boutell.com/gd/">GD Library</ulink>, --></para>
<bridgehead renderas="sect4">Optional
(to Build Language Bindings)</bridgehead>
<para role="optional"><ulink url="http://www.swig.org/">SWIG</ulink>
(<application>SWIG</application> must be installed or no bindings will be
built),
<xref linkend="guile"/>,
<xref linkend="jdk"/>,
<xref linkend="php"/>,
<xref linkend="python"/>,
<xref linkend="ruby"/>,
<xref linkend="tcl"/>,
C# (<ulink url="http://www.southern-storm.com.au/portable_net.html">DotGNU Portable.NET</ulink>
or <ulink url="http://www.mono-project.com/Main_Page">Mono</ulink>),
<ulink url="http://www.iolanguage.com/about/">Io</ulink>,
<ulink url="http://www.lua.org/">Lua</ulink>, and
<ulink url="http://caml.inria.fr/ocaml/index.en.html">Objective Caml</ulink></para>
<para condition="html" role="usernotes">User Notes:
<ulink url="&blfs-wiki;/graphviz"/></para>
</sect2>
<sect2 role="installation">
<title>Installation of Graphviz</title>
<para>Install <application>Graphviz</application> by running the following
commands:</para>
<screen><userinput>./configure --prefix=/usr &amp;&amp;
make</userinput></screen>
<para>This package does not come with a test suite.</para>
<para>Now, as the <systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>make install</userinput></screen>
<para>If desired, create a symbolic link in the system documents directory
to the documentation installed in
<filename class='directory'>/usr/share/graphviz/doc</filename> using the
following command as the <systemitem class="username">root</systemitem>
user:</para>
<screen role="root"><userinput>ln -v -s /usr/share/graphviz/doc \
/usr/share/doc/graphviz-&graphviz-version;</userinput></screen>
</sect2>
<sect2 role="configuration">
<title>Configuring Graphviz</title>
<sect3 id="graphviz-config">
<title>Config Files</title>
<para><filename>/usr/lib/graphviz/config</filename></para>
<indexterm zone="graphviz graphviz-config">
<primary sortas="e-usr-share-graphviz-config">/usr/share/graphviz/config</primary>
</indexterm>
</sect3>
<sect3><title>Configuration Information</title>
<para>There are no specific configuration requirements for
<application>Graphviz</application>. You may consider installing the
additional plugins and tools available from the download page at
<ulink url="http://www.graphviz.org/Download_source.php"/> for additional
capabilities. If additional plugins are installed, you can run
<command>dot_static -c</command> (as the
<systemitem class="username">root</systemitem> user) to update the
<filename>config</filename> file in
<filename class='directory'>/usr/lib/graphviz</filename>.</para>
</sect3>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directories</segtitle>
<seglistitem>
<seg>acyclic, bcomps, ccomps, circo, dijkstra, dot, dot2gxl,
dot_static, dotty, fdp, gc, gvcolor, gvpack, gvpr, gxl2dot, lefty,
lneato, nop, prune, sccmap, tred, twopi and unflatten</seg>
<seg>libagraph.{so,a}, libcdt.{so,a}, libexpr.{so,a}, libgraph.{so,a},
libpack.{so,a}, libpathplan.{so,a}, additional support libraries
and language bindings</seg>
<seg>/usr/include/graphviz, /usr/lib/graphviz and
/usr/share/graphviz</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="acyclic">
<term><command>acyclic</command></term>
<listitem>
<para>is a filter that takes a directed graph as input and outputs a
copy of the graph with sufficient edges reversed to make the graph
acyclic. The reversed edge inherits all of the attributes of the
original edge.</para>
<indexterm zone="graphviz acyclic">
<primary sortas="b-acyclic">acyclic</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bcomps">
<term><command>bcomps</command></term>
<listitem>
<para>decomposes graphs into their biconnected components, printing
the components to standard output.</para>
<indexterm zone="graphviz bcomps">
<primary sortas="b-bcomps">bcomps</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ccomps">
<term><command>ccomps</command></term>
<listitem>
<para>decomposes graphs into their connected components, printing the
components to standard output.</para>
<indexterm zone="graphviz ccomps">
<primary sortas="b-ccomps">ccomps</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="circo">
<term><command>circo</command></term>
<listitem>
<para>draws graphs using a circular layout. The tool identifies
biconnected components and draws the nodes of the component on a
circle. The block-cutpoint tree is then laid out using a recursive
radial algorithm. Edge crossings within a circle are minimized by
placing as many edges on the circle's perimeter as possible. In
particular, if the component is outerplanar, the component will have
a planar layout.</para>
<indexterm zone="graphviz circo">
<primary sortas="b-circo">circo</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dijkstra">
<term><command>dijkstra</command></term>
<listitem>
<para>reads a stream of graphs and for each computes the distance of
every node from sourcenode.</para>
<indexterm zone="graphviz dijkstra">
<primary sortas="b-dijkstra">dijkstra</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dot">
<term><command>dot</command></term>
<listitem>
<para>draws directed graphs. It works well on DAGs and other graphs
that can be drawn as hierarchies. It reads attributed graph files and
writes drawings. By default, the output format dot is the input file
with layout coordinates appended.</para>
<indexterm zone="graphviz dot">
<primary sortas="b-dot">dot</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dot2gxl">
<term><command>dot2gxl</command></term>
<listitem>
<para>converts between graphs represented in GXL and in the DOT
language. Unless a conversion type is specified using a flag,
<command>gxl2dot</command> will deduce the type of conversion from
the suffix of the input file, a
<filename class='extension'>.dot</filename> suffix causing a
conversion from DOT to GXL, and a
<filename class='extension'>.gxl</filename> suffix causing a
conversion from GXL to DOT.</para>
<indexterm zone="graphviz dot2gxl">
<primary sortas="b-dot2gxl">dot2gxl</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dot_static">
<term><command>dot_static</command></term>
<listitem>
<para>is a version of <command>dot</command>that has all the
<application>Graphviz</application> libraries compiled
statically.</para>
<indexterm zone="graphviz dot_static">
<primary sortas="b-dot_static">dot_static</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dotty">
<term><command>dotty</command></term>
<listitem>
<para>is a graph editor for the X Window System. It may be run as a
standalone editor, or as a front end for applications that use
graphs. It can control multiple windows viewing different
graphs.</para>
<indexterm zone="graphviz dotty">
<primary sortas="b-dotty">dotty</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="fdp">
<term><command>fdp</command></term>
<listitem>
<para>draws undirected graphs using a <quote>spring</quote> model. It
relies on a force-directed approach in the spirit of Fruchterman and
Reingold.</para>
<indexterm zone="graphviz fdp">
<primary sortas="b-fdp">fdp</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gc-graphviz">
<term><command>gc</command></term>
<listitem>
<para>is a graph analogue to <command>wc</command> in that it prints
to standard output the number of nodes, edges, connected components
or clusters contained in the input files. It also prints a total
count for all graphs if more than one graph is given.</para>
<indexterm zone="graphviz gc-graphviz">
<primary sortas="b-gc">gc</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvcolor">
<term><command>gvcolor</command></term>
<listitem>
<para>is a filter that sets node colors from initial seed values.
Colors flow along edges from tail to head, and are averaged (as HSB
vectors) at nodes. The graph must already have been processed by
<command>dot</command>.</para>
<indexterm zone="graphviz gvcolor">
<primary sortas="b-gvcolor">gvcolor</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvpack">
<term><command>gvpack</command></term>
<listitem>
<para>reads in a stream of graphs, combines the graphs into a single
layout, and produces a single graph serving as the union of the input
graphs. The input graphs must be in <command>dot</command> format, and
must have all necessary layout information.</para>
<indexterm zone="graphviz gvpack">
<primary sortas="b-gvpack">gvpack</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvpr">
<term><command>gvpr</command></term>
<listitem>
<para>is a graph stream editor inspired by <command>awk</command>. It
copies input graphs to its output, possibly transforming their
structure and attributes, creating new graphs, or printing arbitrary
information.</para>
<indexterm zone="graphviz gvpr">
<primary sortas="b-gvpr">gvpr</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gxl2dot">
<term><command>gxl2dot</command></term>
<listitem>
<para>converts between graphs represented in GXL and in the DOT
language. Unless a conversion type is specified using a flag,
<command>gxl2dot</command> will deduce the type of conversion from
the suffix of the input file, a
<filename class='extension'>.dot</filename> suffix causing a
conversion from DOT to GXL, and a
<filename class='extension'>.gxl</filename> suffix causing a
conversion from GXL to DOT.</para>
<indexterm zone="graphviz gxl2dot">
<primary sortas="b-gxl2dot">gxl2dot</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="lefty">
<term><command>lefty</command></term>
<listitem>
<para>is a two-view graphics editor for technical pictures.</para>
<indexterm zone="graphviz lefty">
<primary sortas="b-lefty">lefty</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="lneato">
<term><command>lneato</command></term>
<listitem>
<para>is a graph editor for the X Window System. It may be run as a
standalone editor, or as a front end for applications that use
graphs. It can control multiple windows viewing different
graphs.</para>
<indexterm zone="graphviz lneato">
<primary sortas="b-lneato">lneato</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="nop">
<term><command>nop</command></term>
<listitem>
<para>reads a stream of graphs and prints each in pretty-printed
(canonical) format on stdout. If no files are given, it reads from
stdin.</para>
<indexterm zone="graphviz nop">
<primary sortas="b-nop">nop</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="prune">
<term><command>prune</command></term>
<listitem>
<para>reads directed graphs in the same format used by
<command>dot</command> and removes subgraphs rooted at nodes
specified on the command line via options. These nodes themselves
will not be removed, but can be given attributes so that they can be
easily located by a graph stream editor such as
<command>gpr</command>. <command>prune</command> correctly handles
cycles, loops and multi-edges.</para>
<indexterm zone="graphviz prune">
<primary sortas="b-prune">prune</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="sccmap">
<term><command>sccmap</command></term>
<listitem>
<para>decomposes digraphs into strongly connected components and an
auxiliary map of the relationship between components. In this map,
each component is collapsed into a node. The resulting graphs are
printed to standard out. The number of nodes, edges and strongly
connected components are printed to standard error.
<command>sccmap</command> is a way of partitioning large graphs into
more manageable pieces.</para>
<indexterm zone="graphviz sccmap">
<primary sortas="b-sccmap">sccmap</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="tred">
<term><command>tred</command></term>
<listitem>
<para>computes the transitive reduction of directed graphs, and
prints the resulting graphs to standard output. This removes edges
implied by transitivity. Nodes and subgraphs are not otherwise
affected. The <quote>meaning</quote> and validity of the reduced
graphs is application dependent. <command>tred</command> is
particularly useful as a preprocessor to <command>dot</command> to
reduce clutter in dense layouts.</para>
<indexterm zone="graphviz tred">
<primary sortas="b-tred">tred</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="twopi">
<term><command>twopi</command></term>
<listitem>
<para>draws graphs using a radial layout. Basically, one node is
chosen as the center and put at the origin. The remaining nodes are
placed on a sequence of concentric circles centered about the origin,
each a fixed radial distance from the previous circle.</para>
<indexterm zone="graphviz twopi">
<primary sortas="b-twopi">twopk</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="unflatten">
<term><command>unflatten</command></term>
<listitem>
<para>is a preprocessor to <command>dot</command> that is used to
improve the aspect ratio of graphs having many leaves or disconnected
nodes. The usual layout for such a graph is generally very wide or
tall. <command>unflatten</command> inserts invisible edges or adjusts
the minlen on edges to improve layout compaction.</para>
<indexterm zone="graphviz unflatten">
<primary sortas="b-unflatten">unflatten</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libagraph">
<term><filename class='libraryfile'>libagraph.{so,a}</filename></term>
<listitem>
<para>supports graph programming by maintaining graphs in memory and
reading and writing graph files. Graphs, nodes and edges may be
attributed with programmer-defined records and string name-value
pairs. Graphs are composed of nodes, edges, and nested subgraphs.
Internally, <filename class='libraryfile'>libagraph</filename>
depends extensively on
<filename class='libraryfile'>libcdt</filename> (formerly
<filename class='libraryfile'>libdict</filename>) for set
representation.</para>
<indexterm zone="graphviz libagraph">
<primary sortas="c-libagraph">libagraph.{so,a}</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libcdt">
<term><filename class='libraryfile'>libcdt.{so,a}</filename></term>
<listitem>
<para>manages run-time dictionaries using standard container data
types: unordered set/multiset, ordered set/multiset, list, stack,
and queue.</para>
<indexterm zone="graphviz libcdt">
<primary sortas="c-libcdt">libcdt.{so,a}</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libexpr">
<term><filename class='libraryfile'>libexpr.{so,a}</filename></term>
<listitem>
<para>is a C-like expression library.</para>
<indexterm zone="graphviz libexpr">
<primary sortas="c-libexpr">libexpr.{so,a}</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libgraph">
<term><filename class='libraryfile'>libgraph.{so,a}</filename></term>
<listitem>
<para>maintains directed and undirected attributed graphs in memory
and reads and writes graph files. Graphs are composed of nodes,
edges, and nested subgraphs. A subgraph may contain any nodes and
edges of its parents, and may be passed to any
<filename class='libraryfile'>libgraph</filename> function taking a
graph pointer, except the three that create new attributes (where a
main graph is required).</para>
<indexterm zone="graphviz libgraph">
<primary sortas="c-libgraph">libgraph.{so,a}</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libpack">
<term><filename class='libraryfile'>libpack.{so,a}</filename></term>
<listitem>
<para>supports the use of connected components in the context of
laying out graphs using other <application>Graphviz</application>
libraries. One set of functions can be used to take a single graph
and break it apart into connected components. A complementary set of
functions takes a collection of graphs (not necessarily components of
a single graph) which have been laid out separately, and packs them
together moderately tightly. The packing is done using the polyomino
algorithm of K. Freivalds et al.</para>
<indexterm zone="graphviz libpack">
<primary sortas="c-libpack">libpack.{so,a}</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libpathplan">
<term><filename class='libraryfile'>libpathplan.{so,a}</filename></term>
<listitem>
<para>contains functions to find the shortest path between two points
in a simple polygon.</para>
<indexterm zone="graphviz libpathplan">
<primary sortas="c-libpathplan">libpathplan.{so,a}</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>