WOLFRAM 语言教程

树形图

TreePlot 以连续分层的树形或者一组树的布局形式绘制图中的各个顶点. 如果图 g 不是一个树,TreePlot 以该图的每个分量对应的生成树为基础进行布局,以绘制各个顶点.

TreePlot[{vi 1->vj 1,vi 2->vj 2,}]生成图的树形图,其中顶点 与顶点 相连接
TreePlot[{{vi 1->vj 1,lbl1},}]把标签 与图中的边相联系
TreePlot[g,pos]把图线中的树的根放置在位置 pos
TreePlot[g,pos,vk]使用顶点 作为树形图的根节点
TreePlot[m]生成由邻接矩阵 m 表示的图的分层图

绘制树形图.

一个简单的图和它的树形图.
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=

默认情况下,TreePlot 把每个树的根放置在上面. TreePlot[g,pos] 在位置 pos 放置根. 可能的位置是:TopBottomLeftRightCenter.

这里通过把根放置在左边,绘制树.
In[3]:=
Click for copyable input
Out[3]=
这里把根放置在中心.
In[4]:=
Click for copyable input
Out[4]=

TreePlot 的选项

除了 Graphics 的选项,LayeredGraphPlot 还接受下列选项.

选项名
默认值
DataRangeAutomatic生成的顶点坐标的范围
DirectedEdgesFalse是否把边显示为有向箭头
EdgeLabelingTrue是否包含对边给出的标签
EdgeRenderingFunctionAutomatic对于边给出明确图形的函数
LayerSizeFunction1&每个层所允许的高度
MultiedgeStyleAutomatic如何在顶点之间绘制多重边
PackingMethodAutomatic用于排列分量的方法
PlotRangePaddingAutomatic在图线周边应该填充的空白量
PlotStyleAutomatic对象的绘制样式
SelfLoopStyleAutomatic如何绘制连接顶点和自身的边
VertexCoordinateRulesAutomatic明确顶点坐标的规则
VertexLabelingAutomatic是否把顶点名称显示为标签
VertexRenderingFunctionAutomatic对顶点给出明确图形的函数

TreePlot 的选项.

DirectedEdges

选项 DirectedEdges 指明是否把边绘制成有向箭头. 该选项的可能值为 True 或者 False. 该选项的默认值是False.

在下面的图中,边用箭头表示,而不是用线表示.
In[5]:=
Click for copyable input
Out[5]=

EdgeLabeling

选项 EdgeLabeling 指明是否并且如何显示对边给出的标签. 该选项的可能值为 TrueFalse 或者 Automatic. 该选项的默认值为 True,它在图上显示所提供的边标签. 使用 EdgeLabeling->Automatic 设置,标签以工具提示条的形式显示.

这里显示指定的边标签.
In[6]:=
Click for copyable input
Out[6]=
下面以工具提示条的形式显示标签. 把光标放置在顶点4和顶点7之间的边上以查看工具提示条.
In[7]:=
Click for copyable input
Out[7]=
这里把标签显示为工具提示条. 在光标放置在顶点4和顶点7之间的边上,以查看工具提示条.
In[8]:=
Click for copyable input
Out[8]=

EdgeRenderingFunction

选项 EdgeRenderingFunction 指定图的边的图形表示. 该选项的可能值为 AutomaticNone、或者是一个给出图形基元和指令的适当组合的函数. 使用 Automatic 的默认设置,对每条边使用深红色的线绘制. 使用EdgeRenderingFunction->None,则不绘制边.

这里只绘制顶点.
In[9]:=
Click for copyable input
Out[9]=

使用 EdgeRenderingFunction->g,每条边使用图形基元以及由可以采用三个或多个自变量的函数 g 给出的指令绘制,该函数形如 ,其中 是边的起点和终点的坐标, 是起始和终止顶点,而 是对边指定的任意标签或者 None. EdgeRenderingFunction->g 的明确设置重载EdgeLabelingDirectedEdges 的设置.

这里使用灰色箭头绘制边,其中箭头终端与顶点相距 0.3 的距离(在图的坐标系统中).
In[10]:=
Click for copyable input
Out[10]=
这里分别使用黑色和红色箭头显示边和回路. Graph Utilities Package 中的函数 LineScaledCoordinate 在沿着箭头的 50% 位置处添加文本.
In[11]:=
Click for copyable input
In[12]:=
Click for copyable input
Out[12]=

LayerSizeFunction

LayerSizeFunction 选项指定对于每层所允许的相对高度. 默认情况下,高度为 1. 可能值包含给出实机器精度数的函数.

这里定义并且画出树.
In[13]:=
Click for copyable input
In[14]:=
Click for copyable input
Out[14]=
这里绘制相同的树,其中第一层的相对高度为 1,第二层为 2 而第三层为 3.
In[15]:=
Click for copyable input
Out[15]=

MultiedgeStyle

选项 MultiedgeStyle 指定是否在两个顶点之间绘制重边. MultiedgeStyle 的可能值为 Automatic (默认)、TrueFalse 或者一个正实数. 在默认设置 MultiedgeStyle->Automatic 下,对于由规则列表指定的图形显示重边,而对于由邻接矩阵指定的图形,则不显示重边. 使用 MultiedgeStyle->δ,重边以尺度距离 δ 的展开.

默认情况下,如果一个图由规则列表给出,则显示重边.
In[16]:=
Click for copyable input
Out[16]=
但是对于由邻接矩阵指定的图,则不显示重边.
In[17]:=
Click for copyable input
Out[17]=
这里使用指定的量展开重边.
In[18]:=
Click for copyable input
Out[18]=

PackingMethod

选项 PackingMethod 指定用于排列不连通的分量的方法. 该选项的可能值为 Automatic (默认), . 使用 PackingMethod->"ClosestPacking",从左上角开始,使用位四角方法(polyomino method)排列各个分量使之尽可能彼此接近. 使用 PackingMethod->"ClosestPackingCenter",从中心开始排列分量. 使用 PackingMethod->"Layered",从左上角开始排列分量. 使用PackingMethod->"LayeredLeft" 或者 PackingMethod->"LayeredTop",分别从上或者左分层排列分量. 使用 PackingMethod->"NestedGrid",分量在嵌套网格中排列. 典型的有效默认设置为PackingMethod->"Layered",而排列从最大有界框区域开始.

这里显示使用默认方法排列不连通的分量.
In[19]:=
Click for copyable input
Out[19]=
这里显示使用 方法,排列不连通的分量.
In[20]:=
Click for copyable input
Out[20]=

PlotRangePadding

PlotRangePadding 是由 TreePlot 继承的图形函数的通用选项.

PlotStyle

PlotStyle 是由 TreePlot 继承的图形函数的通用选项. 选项 PlotStyle 指明对象绘制所采用的样式.

使用更粗的线绘制边,使用红色绘制边和顶点标签.
In[21]:=
Click for copyable input
Out[21]=

SelfLoopStyle

选项 SelfLoopStyle 指明是否并且如何对连接自身的顶点绘制回路. 该选项的可能值为 Automatic(默认)、TrueFalse 或者一个正实数. 使用 SelfLoopStyle->Automatic,如果图由规则列表指定,则显示回路,但是如果图由邻接矩阵指定,则不显示回路. 使用 SelfLoopStyle->δ,回路使用直径 δ 绘制(相对于平均边长).

默认情况下,对由规则列表指定的图显示回路.
In[22]:=
Click for copyable input
Out[22]=
如果图由邻接矩阵指定,则不显示回路.
In[23]:=
Click for copyable input
Out[23]=
这里显示直径等于平均边长 0.3 倍的回路.
In[24]:=
Click for copyable input
Out[24]=

VertexCoordinateRules

选项 VertexCoordinateRules 指定顶点坐标. 可能值为 None 或者坐标列表. 由规则列表指定的坐标当前不被TreePlot 支持.

这里使用已知的坐标绘制 Petersen 图.
In[25]:=
Click for copyable input
Out[25]=
这里使用默认方法绘图.
In[26]:=
Click for copyable input
Out[26]=

VertexLabeling

选项 VertexLabeling 指定是否把顶点名称作为标签显示. 该选项的可能值为 TrueFalseAutomatic (默认)以及Tooltip. VertexLabeling->True 显示标签. 对于由邻接矩阵指定的图,顶点标签采用连续整数 ,其中 是矩阵大小. 对于由规则列表指定的图,标签为规则中使用的表达式. VertexLabeling->False 把每个顶点显示为点. VertexLabeling->Tooltip 把每个顶点显示为点,但是在工具提示条中给出它的名称. VertexLabeling->Automatic 把每个顶点显示为点,如果顶点数不大的话,在工具提示条中给出它的名称. 用户也可以在规则列表的任意位置中使用 Tooltip[vk,vlbl],来指明顶点 的其他可选工具条.

这里绘制图,其中标签以邻接矩阵的索引给出.
In[27]:=
Click for copyable input
Out[27]=
这里使用规则列表中指定的标签.
In[28]:=
Click for copyable input
Out[28]=
这里把顶点绘制为点,并且在工具提示条中显示顶点名称. 把光标放置在顶点上可以查看标签.
In[29]:=
Click for copyable input
Out[29]=

VertexRenderingFunction

选项 VertexRenderingFunction 指定图的边的图形表示. 该选项的可能值为 AutomaticNone、或者是一个给出图形基元和指令的适当组合的函数. 使用 Automatic 的默认设置,顶点显示为点,而它们的名称在工具提示条中给出.

默认情况下,顶点显示为点,而对于较小的图,在工具提示条中给出标签. 把光标放置在顶点上可以查看工具提示条.
In[30]:=
Click for copyable input
In[31]:=
Click for copyable input
Out[31]=
这里绘制相同的图,但是没有画出顶点.
In[32]:=
Click for copyable input
Out[32]=

使用 VertexRenderingFunction->g,每个顶点使用由 给定的图形基元绘制,其中 是顶点坐标,而 是顶点标签. VertexRenderingFunction->g 的明确设置重载 VertexLabeling 的设置.

这里以黄色圆盘显示顶点.
In[33]:=
Click for copyable input
Out[33]=

示例

k 叉树

这里绘制具有四层结构的5叉树.
In[14]:=
Click for copyable input
Out[14]=
这里绘制同样的图,但是每个层 的高度与 成正比.
In[15]:=
Click for copyable input
Out[15]=
这里把每个层 的高度设置为与 成正比.
In[16]:=
Click for copyable input
Out[16]=