Hierarchical Drawing of Directed Graphs
LayeredGraphPlot attempts to draw the vertices of a graph in a series of layers, placing dominant vertices at the top, and vertices lower in the hierarchy progressively further down.
LayeredGraphPlot[{v_{i1}>v_{j1},v_{i2}>v_{j2},...}] 
 generate a layered plot of the graph in which vertex v_{ik} is connected to vertex v_{jk} 
LayeredGraphPlot[{{v_{i1}>v_{j1},lbl_{1}},...}] 
 associate labels lbl_{k} with edges in the graph 
LayeredGraphPlot[g,pos]  place the dominant vertices in the plot at position pos 
LayeredGraphPlot[m]  generate a layered plot of the graph represented by the adjacency matrix m 
Hierarchical graph drawing.
LayeredGraphPlot draws a graph so that the edges point predominantly downward. The second argument of
LayeredGraphPlot specifies the position of the root. Possible values for this argument are
Right,
Left,
Top, and
Bottom.
This plots a directed graph.
Out[1]=  

This is the same graph, with edges pointing from left to right.
Out[2]=  

LayeredGraphPlot may produce slightly different output on different platforms, due to floatingpoint differences.
Options for LayeredGraphPlot
In addition to options for
Graphics, the following options are accepted for
LayeredGraphPlot.
Options for LayeredGraphPlot.
DirectedEdges
The option
DirectedEdges specifies whether to draw edges as arrows. Possible values for this option are
True or
False. The default value for this option is
True.
This shows a graph with edges represented by lines instead of arrows.
Out[3]=  

EdgeLabeling
The option
EdgeLabeling specifies whether and how to display labels given for the edges. Possible values for this option are
True,
False, or
Automatic. The default value for this option is
True, which displays the supplied edge labels on the graph. With
EdgeLabeling>Automatic, the labels are shown as tooltips.
This displays the specified edge label.
Out[4]=  

This displays the labels as tooltips. Place the cursor over the edge between vertices 3 and 6 to see the tooltip.
Out[5]=  

Alternatively, use Tooltip[v_{i}>v_{j}, lbl] to specify a tooltip for an edge. Place the cursor over the edge between vertices 3 and 6, as well as the edge label on the edge between vertices 3 and 5, to see the tooltips.
Out[6]=  

EdgeRenderingFunction
The option
EdgeRenderingFunction specifies graphical representation of the graph edges. Possible values for this option are
Automatic,
None, or a function that gives a proper combination of graphics primitives and directives. With the default setting of
Automatic, a dark red line is drawn for each edge. With
EdgeRenderingFunction>None, edges are not drawn.
With
EdgeRenderingFunction>g, each edge is rendered with the graphics primitives and directives given by the function
g. It can take three or more arguments in the form
g[{r_{i}, ..., r_{j}}, {v_{i}, v_{j}}, lbl_{ij}, ...], where
r_{i},
r_{j} are the coordinates of the beginning and ending points of the edge,
v_{i},
v_{j} are the beginning and ending vertices, and
lbl_{ij} is any label specified for the edge or
None. Explicit settings for
EdgeRenderingFunction>g override settings for
EdgeLabeling and
DirectedEdges.
This plots edges as gray arrows with ends set back from vertices by a distance of 0.3 (in the graph's coordinate system).
Out[8]=  

MultiedgeStyle
The option
MultiedgeStyle specifies whether to draw multiple edges between two vertices. Possible values for
MultiedgeStyle are
Automatic (the default),
True,
False, or a positive real number. With the default setting
MultiedgeStyle>Automatic, multiple edges are shown for a graph specified by a list of rules, but not shown if the graph is specified by an adjacency matrix. With
MultiedgeStyle>, the multiedges are spread out to a scaled distance of
.
By default, multiple edges are shown if a graph is given as a list of rules.
Out[11]=  

But multiple edges are not shown for graphs specified by an adjacency matrix.
Out[12]=  

This spreads multiple edges by the specified amount.
Out[13]=  

PackingMethod
The option
PackingMethod specifies the method used for packing disconnected components. Possible values for the option are
Automatic (the default),
"ClosestPacking",
"ClosestPackingCenter",
"Layered",
"LayeredLeft",
"LayeredTop", and
"NestedGrid". With
PackingMethod>"ClosestPacking", components are packed as close together as possible using a polyomino method [6], starting from the top left. With
PackingMethod>"ClosestPackingCenter", components are packed starting from the center. With
PackingMethod>"Layered", components are packed in layers starting from top left. With
PackingMethod>"LayeredLeft" or
PackingMethod>"LayeredTop", components are packed in layers starting from the top/left respectively. With
PackingMethod>"NestedGrid", components are arranged in a nested grid. The typical effective default setting is
PackingMethod>"Layered", and the packing starts with components of the largest bounding box area.
This shows the packing of disconnected components by the default method.
Out[14]=  

This shows the packing of disconnected components using the "ClosestPackingCenter" method.
Out[15]=  

PlotRangePadding
PlotRangePadding is a common option for graphics functions inherited by
LayeredGraphPlot.
PlotStyle
PlotStyle is a common option for graphics functions inherited by
LayeredGraphPlot. The option
PlotStyle specifies the style in which objects are drawn.
Draw edges with thicker arrows, and both edges and vertices' labels in red.
Out[16]=  

SelfLoopStyle
The option
SelfLoopStyle specifies whether and how to draw loops for vertices that are linked to themselves. Possible values of the option are
Automatic (the default),
True,
False, or a positive real number. With
SelfLoopStyle>Automatic, selfloops are shown if the graph is specified by a list of rules, but not by an adjacency matrix. With
SelfLoopStyle>, the selfloops are drawn with a diameter of
(relative to the average edge length).
By default, selfloops are displayed for a graph specified by a list of rules.
Out[17]=  

Selfloops are not shown if the graph is specified by an adjacency matrix.
Out[18]=  

This shows selfloops with diameter equal to 0.3 times the average length of the edges.
Out[19]=  

VertexCoordinateRules
The option
VertexCoordinateRules specifies the coordinates of the vertices. Possible values are
None, or a list of coordinates. Coordinates specified by a list of rules are not currently supported by
LayeredGraphPlot.
This draws the Petersen graph using known coordinates.
Out[20]=  

This draws with the default method.
Out[21]=  

VertexLabeling
The option
VertexLabeling specifies whether to show vertex names as labels. Possible values for this option are
True,
False,
Automatic (the default) and
Tooltip.
VertexLabeling>True shows the labels. For graphs specified by an adjacency matrix, vertex labels are taken to be successive integers
1, 2, ..., n, where
n is the size of the matrix. For graphs specified by a list of rules, labels are the expressions used in the rules.
VertexLabeling>False displays each vertex as a point.
VertexLabeling>Tooltip displays each vertex as a point, but gives its name in a tooltip.
VertexLabeling>Automatic displays each vertex as a point, giving its name in a tooltip if the number of vertices is not too large. You can also use
Tooltip[v_{k}, v_{lbl}] anywhere in the list of rules to specify an alternative tooltip for a vertex
v_{k}.
This draws the graph with labels given as indices of the adjacency matrix.
Out[22]=  

This uses the labels specified in the list of rules.
Out[23]=  

This plots vertices as points, and displays vertex names in tooltips. Place the cursor above the vertices to see the labels.
Out[24]=  

VertexRenderingFunction
The option
VertexRenderingFunction specifies graphical representation of the graph edges. Possible values for this option are
Automatic,
None, or a function that gives a proper combination of graphics primitives and directives. With the default setting of
Automatic, vertices are displayed as points, with their names given in tooltips.
By default, vertices are displayed as points and, for small graphs, labeled in tooltips. Point the cursor at a vertex to see the tooltip.
Out[23]=  

This draws the same graph, but without the vertices.
Out[24]=  

With
VertexRenderingFunction>g, each vertex is rendered with the graphics primitives given by
g[r_{i}, v_{i}, ...], where
r_{i} is the coordinate of the vertex and
v_{i} is the label of the vertex. Explicit settings for
VertexRenderingFunction>g override settings for
VertexLabeling.
This shows vertices as yellow disks.
Out[27]=  

Example Gallery
Flow Chart
LayeredGraphPlot helps visualize flow charts, for example for business, economic, or technical presentations.
This shows a flow chart that flows from left to right.
Out[29]=  

Food Chains
Food chains can be visualized with
LayeredGraphPlot.
This shows another food chain.
Out[2]=  

History of Unix
LayeredGraphPlot is suitable for visualizing historical events.