graphviz: Graphviz bindings for Haskell.

[ bsd3, graphics, graphs, library ] [ Propose Tags ]

This library provides bindings for the Dot language used by the Graphviz ( suite of programs. Also provided are convenience functions to convert FGL graphs into Dot code with a large degree of customisation for layout, etc. Also allows a limited amount of parsing of Dot, and round-trip usage of Graphviz to attach positional data to each node and edge in the graph.

[Skip to Readme]
Versions 2008.7.10, 2008.7.11, 2008.9.6, 2008.9.20, 2009.5.1, 2999.0.0.0, 2999.1.0.0, 2999.1.0.1, 2999.1.0.2, 2999.5.0.0, 2999.5.1.0, 2999.5.1.1, 2999.6.0.0, 2999.7.0.0, 2999.8.0.0, 2999.9.0.0, 2999.10.0.0, 2999.10.0.1, 2999.11.0.0, 2999.12.0.0, 2999.12.0.1, 2999.12.0.2, 2999.12.0.3, 2999.12.0.4, 2999.13.0.0, 2999.13.0.1, 2999.13.0.2, 2999.13.0.3, 2999.14.0.0, 2999.14.1.0, 2999.15.0.0, 2999.15.0.1, 2999.16.0.0, 2999.17.0.0, 2999.17.0.1, 2999.17.0.2, 2999.18.0.0, 2999.18.0.1, 2999.18.0.2, 2999.18.1.0, 2999.18.1.1, 2999.18.1.2, 2999.19.0.0
Change log Changelog
Dependencies base (>=3 && <5), bytestring (<0.10), colour (==2.3.*), containers, extensible-exceptions, fgl, filepath, polyparse (>=1.1), pretty, process, QuickCheck (==2.1.*) [details]
License BSD-3-Clause
Copyright Matthew Sackman, Ivan Lazar Miljenovic
Author Matthew Sackman, Ivan Lazar Miljenovic
Category Graphs, Graphics
Source repo head: darcs get
Uploaded by IvanMiljenovic at Mon Nov 30 14:05:54 UTC 2009
Distributions Arch:2999.19.0.0, Debian:2999.18.0.2, NixOS:2999.19.0.0
Executables graphviz-testsuite
Downloads 33475 total (141 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI





Build the test suite, including an executable to run it.


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for graphviz-2999.7.0.0

[back to package description]
The graphviz library provides bindings for Haskell to the Dot language
used by the Graphviz [1] suite of tools for graph visualisation.  The
latest version of this library is available from Hackage [2].


Features of the graphviz library include:

* Almost complete coverage of all Graphviz attributes, etc. for
  graphs, sub-graphs, clusters, nodes and edges:

* Thorough documentation on known problems with the library and how it
  differs from the actual Dot specification.

* Support for specifying clusters.

* The ability to use a custom node type.

* Functions for running a Graphviz layout tool with all specified
  output types.

* The ability to not only generate but also parse Dot code (note that
  currently this is limited to a rather strict ordering of

* Functions to convert FGL graphs to Dot code - including support to
  group them into clusters - with a high degree of customisation by
  specifying which attributes to use.

* Round-trip support for passing an FGL graph through Graphviz to
  augment node and edge labels with positional information.

Please note that currently the convenience functions are only
available for FGL [3] graphs; this will be extended in future once a
method for dealing with generic graph types is developed.



Developing graphviz

Following are some notes on what to keep in mind if you want to
contribute to the development of graphviz:

* When printing and parsing values, there are two options: with or
  without quotes.  Some values (e.g. numbers) may optionally be quoted
  in Dot code; others (namely strings with spaces, etc.) _must_ be

* Whenever you are parsing a type of value where the Dot
  representation of one is the prefix of the Dot representation of
  another, be sure to parse the longer value first.

* Because there are so many attributes, the definition, instances for
  and functions using the overall Attribute type are all defined using
  the AttributeGenerator.hs script.  This file is not an actual part
  of the library, but should be used if any top-level work is being
  done for Attributes.

* Any changes should pass the testsuite, which is built by enabling
  the "test" flag.  There are three ways of testing:

  - Run the graphviz-testsuite program; this takes approximately 90
    minutes to run and covers various properties that should hold.

  - Import the "Data.GraphViz.Testing" module for manual testing.

  - If you did not build the library with the "test" flag enabled, you
    can extract Data.GraphViz.Testing and Data.GraphViz.Testing.* from
    the source tarball to be able to use them directly; they only use
    graphviz's public API.