Organizes
nodes without overlaps in horizontal or vertical levels.
Arranges
the graph such that most of the links are short and flow
uniformly in the same direction (from left to right, from top
to bottom, and so on).
Reduces
the number of link crossings. Most of the time, produces
drawings with no crossings or only few crossings.
Often
produces balanced drawings that emphasize the symmetries in
the graph.
Supports
self-links (that is, links with the same
origin and destination node),
multiple links between the same pair of
nodes, and cycles.
Efficient,
scalable algorithm. Produces a nice layout for most sparse and
medium-dense graphs relatively quickly, even if the number of
nodes is large.
Provides
several alignment and offset options.
Supports
port specifications where links attach the nodes. Allows you
to specify which side of a node (top, bottom, left, right) a
link can be connected to or to specify which relative port
position must be used for the connection.
Supports
layout constraints. Allows you to specify relative positional
constraints, for instance, that a node is above another node
or left of another node.
Incremental
and nonincremental mode. In incremental mode, the previous
position of nodes are taken into account. Positions the nodes
without changing the relative order of the nodes so that the
layout is stable on incremental changes of the graph.
Can
handle flat and nested graphs. In recursive layout mode, it
routes the intergraph links of nested graphs and places the
labels of nodes and links in subgraphs.
The
computation time depends on the number of nodes, the number of
levels, and the number of links that cross several levels.
Most of the time, the links are placed between adjacent
levels, which keeps the computation time small.