Author image René Nyffenegger

NAME

GraphViz::Graph - Object Oriented interface to graphviz.

VERSION

Version 0.03

SYNOPSIS

    use GraphViz::Graph;

    my $graph = GraphViz::Graph->new('filename-without-suffix');

    # Create nodes:
    my $nd_1 = $graph->node(…);
    my $nd_2 = $graph->node(…);

    # Connect nodes:
    $graph->edge($nd_1, $nd_2);

    # Create .dot file, run graphviz/dot to
    # create filename-without-suffix.png:
    $graph->create('png');

Note: GraphViz::Graph needs dot somewhere in $PATH.

METHODS

new

    my $graph = GraphViz::Graph->new('FileNameBase');

Start a graph. 'FileNameBase' is the base name for the produced dot and png/pdf/svg… etc. output file. (See "create").

label

    # Add text label:
    $graph->label({text => 'Graph Title'}');

    # Add html label:
    $graph->label({html => '<font point-size="20">Say <font face="Courier">Hello World</font></font>'}');

    # Position label:
    my $graph_lbl = $graph->label(…);
    $graph_lbl -> loc('t'); # t = top

Add a label to a graph. Note, a graph can only have one label. This label is most probably used as a title.

For positioning the label, see "loc" in GraphViz::Graph::Label.

node

    my $nd_foo = GraphViz::Graph->node();
    # … later:
    $nd_foo -> label({html=>"<b>Bold</b><i>Italic</i>"});

Add a node to a graph. The returned object is a GraphViz::Graph::Node.

edge

Add an edge to a graph.

    my $nd_one   = $graph->node();
    my $nd_two   = $graph->node();
    my $nd_three = $graph->node();

    $nd_one->label({html=>"…"});

    $nd_two->label({html=>"<table>
      <tr><td port='port_f'>f</td><td>g</td></tr>
    </table>"});

    $graph->edge($nd_one, $nd_two->port('port_f')):
    $graph->edge($nd_two, $nd_three);

same_rank

    $graph->same_rank($node_one, $node_two);
    $graph->same_rank($node_one, $node_two, $node_three, …);

Put two or more nodes on the same rank.

create

    my $graph = GraphViz::Graph->new('my_file');

    # Do stuff...
    $graph->node(…);
  
    # Finally, create the graphviz output:
    # The call to create produces (as per constructor)
    #   - my_file.dot
    #   - my_file.pdf
    $ graph->create('pdf');

node_or_port_to_string_

This function is internally used by the constructur (new()) of GraphViz::Graph::Edge.

Copyright

Copyright © 2017 René Nyffenegger, Switzerland. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at: http://www.perlfoundation.org/artistic_license_2_0

Testing

The tests need Test::Files.

Since GraphViz::Graph needs dot, the tests are skipped if

Source Code

The source code is on github