# Tree Drawing

TreePlot lays out the vertices of a graph in a tree of successive layers, or a collection of trees. If the graph g is not a tree, TreePlot lays out its vertices on the basis of a spanning tree of each component of the graph.

TreePlot[{v_{i 1}->v_{j 1},v_{i 2}->v_{j 2},…}] | generate a tree plot of the graph in which vertex v _{ik} is connected to vertex v_{jk} |

TreePlot[{{v_{i 1}->v_{j 1},lbl_{1}},…}] | associate labels lbl _{k} with edges in the graph |

TreePlot[g,pos] | place roots of trees in the plot at position pos |

TreePlot[g,pos,v_{k}] | use vertex v _{k} as the root node in the tree plot |

TreePlot[m] | generate a layered plot of the graph represented by the adjacency matrix m |

By default, TreePlot places each tree root at the top. TreePlot[g,pos] places the roots at position pos. Possible positions are: Top, Bottom, Left, Right, and Center.

option name | default value | |

DataRange | Automatic | the range of vertex coordinates to generate |

DirectedEdges | False | whether to show edges as directed arrows |

EdgeLabeling | True | whether to include labels given for edges |

EdgeRenderingFunction | Automatic | function to give explicit graphics for edges |

LayerSizeFunction | 1& | the height to allow for each layer |

MultiedgeStyle | Automatic | how to draw multiple edges between vertices |

PackingMethod | Automatic | method to use for packing components |

PlotRangePadding | Automatic | how much padding to put around the plot |

PlotStyle | Automatic | style in which objects are drawn |

SelfLoopStyle | Automatic | how to draw edges linking a vertex to itself |

VertexCoordinateRules | Automatic | rules for explicit vertex coordinates |

VertexLabeling | Automatic | whether to show vertex names as labels |

VertexRenderingFunction | Automatic | function to give explicit graphics for vertices |

Options for TreePlot.

### DirectedEdges

The option DirectedEdges specifies whether to draw edges as directed arrows. Possible values for this option are True or False. The default value for this option is False.

### 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 edge label as a tooltip. Place the cursor over the edge between vertices 4 and 7 to see the tooltip:

This displays the labels as tooltips. Place the cursor over the edge between vertices 4 and 7 to see the tooltip:

### 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 that 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 0.3 (in the graph's coordinate system):

This displays edges and self-loops with black and red arrows, respectively. The function LineScaledCoordinate from the Graph Utilities Package adds text at 50% along arrows:

### LayerSizeFunction

The LayerSizeFunction option specifies the relative height to allow for each layer. By default the height is 1. Possible values include a function that gives real machine numbers.

This plots the same tree, with the first layer a relative height of 1, the second 2, and the third 3:

### 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 specified by an adjacency matrix. With MultiedgeStyle->δ, the multiedges are spread out to a scaled distance of δ.

#### 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, 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 the top left. With PackingMethod->"LayeredLeft" or PackingMethod->"LayeredTop", components are packed in layers starting from the top or 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.

### PlotRangePadding

### PlotStyle

PlotStyle is a common option for graphics functions inherited by TreePlot. The option PlotStyle specifies the style in which objects are drawn.

### SelfLoopStyle

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

### 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 supported by TreePlot currently.

### 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 , where 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 plots vertices as points, and displays vertex names in tooltips. Place the cursor above the vertices to see the labels:

### 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:

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.