[ library(graphviz) | Reference Manual | Alphabetic Index ]

view_graph(+Graph, +Options)

Display a given graph in a window
Graph
A graph structure
Options
A list of Option:Value pairs

Description

This predicate takes a graph, applies one of the graphviz layout routines to it, and displays the result in a viewer window.

The viewer is an application called grappa, which requires Java.

Possible options are:

graph_attrs
a list of Name=Value pairs which specify the graph attributes
default_edge_attrs
a list of Name=Value pairs which specify the default edge attributes
default_node_attrs
a list of Name=Value pairs which specify the default node attributes
node_attrs_generator
a partialpredicate specification pred(ExtraArgs,...) that will generate node attributes for specific nodes. This predicate will be invoked for every node in the graph with the arguments pred(ExtraArgs,...,+Graph, +Node, -AttrList). It is expected to compute an attribute list for a particular node. If it fails, the node will be displayed using the default node attributes.
edge_attrs_generator
a partialpredicate specification pred(ExtraArgs,...) that will generate edge attributes for specific edges. This predicate will be invoked for every edge in the graph with the arguments pred(ExtraArgs,...,+Graph, +Edge, -AttrList). It is expected to compute an attribute list for a particular edge. If it fails, the edge will be displayed using the default edge attributes.
layout
One of the atoms: none, dot, neato, twopi, force_directed, radial, tree, top_to_bottom, left_to_right. Alternatively, a list specifying a layout command (see exec/3).
For the exact definition of graph, node and edge attributes, see the specification of the DOT language in the graphviz documentation.

Modules

This predicate is sensitive to its module context (tool predicate, see @/2).

Examples

    ?- lib(graph_algorithms), lib(graphviz).
    Yes (1.17s cpu)

    ?- make_random_graph(10, 30, true, true, true, G),
       view_graph(G, [layout:left_to_right]).
    G = graph(...)
    Yes (0.03s cpu)

    ?- make_random_graph(10, 30, true, true, true, G),
       view_graph(G, [layout:left_to_right]).
    G = graph(...)
    Yes (0.03s cpu)


% Sample node attribute generator

node_colour(Graph, Node, Attrs) :-
	( Node mod 2 =:= 0 -> Attrs = [color=red] ; Attrs = [color=green] ).

% Sample run

    ?- make_random_graph(10, 30, true, true, true, G),
       view_graph(G, [node_attrs_generator:node_colour]).
    G = graph(...)
    Yes (0.03s cpu)
    

See Also

view_graph / 1, library(graph_algorithms)