有向图的分层绘制

LayeredGraphPlot 试图在一系列层次中画出图的各个顶点,其中把主导顶点放置在顶部,并逐步画出低层次的顶点.
LayeredGraphPlot[{vi1->vj1,vi2->vj2,}]
以分层形式生成图的一个图线,其中顶点 vik 与顶点 vjk 相连
LayeredGraphPlot[{{vi1->vj1,lbl1},}]
把标签 lblk 与图中的边相联系
LayeredGraphPlot[g,pos]
在图线中的位置 pos 上放置主导顶点
LayeredGraphPlot[m]
产生由邻接矩阵 m 表示的分层图
分层绘图.
LayeredGraphPlot 绘制一个图,使得边的指向主要是向下的. LayeredGraphPlot 的第二个变量指明根节点的位置. 该变量的可能值为 RightLeftTopBottom.
这里画出一个有向图:
以下是同样的图,其中边的指向从左到右:
由于浮点的不同,LayeredGraphPlot 可能会在不同的平台上,产生稍有不同的输出.
LayeredGraphPlot 的选项
除了 Graphics 的选项,LayeredGraphPlot 也接受下列选项.
选项名
默认值
DataRangeAutomatic
所产生的顶点坐标的范围
DirectedEdgesTrue
是否把边显示为有向箭头
EdgeLabelsAutomatic
是否包含对边给出的标签
EdgeShapeFunctionAutomatic
对边给出明确的图形函数
MultiedgeStyleAutomatic
如何在顶点之间绘制重边
"PackingLayout"Automatic
用于排列分量的方法
PlotRangePaddingAutomatic
在图线周边填充的空白量
PlotStyleAutomatic
绘制对象所采用的样式
SelfLoopStyleAutomatic
如何绘制连接一个顶点自身的边
VertexCoordinateRulesAutomatic
明确的顶点坐标的规则
VertexLabelsAutomatic
是否把顶点名称显示为标签
VertexRenderingFunctionAutomatic
对顶点给出明确的图形函数
LayeredGraphPlot 的选项.

DirectedEdges

DirectedEdges 选项指定是否把边画为箭头. 该选项的可能值为 True 或者 False. 该选项的默认值为 True.
这里显示了一个图,其中边由线表示,而不是由箭头表示:

EdgeLabels

EdgeLabels 选项指定是否并且如何显示对边给定的标签. 该选项的可能值为 AllNone 或者 Automatic. 该选项的默认值为 Automatic,在默认值下,显示图中给定的边标签.
这里显示指定的边标签:
使用 Tooltip[vi->vj,lbl] 指定一条边的工具提示条. 把光标放置在顶点3和顶点6之间的边上,以及顶点3和顶点5之间的边标签上,就可以看到工具提示条:

EdgeShapeFunction

EdgeShapeFunction 选项指定了图的边的图形表示方法. 该选项的可能值为 AutomaticNone 或者是一个给出图形基元和指令的合理组合的函数. 使用默认设置 Automatic,对每条边使用深红色的线绘制. 当设置EdgeShapeFunction->None 时,则不绘制边.
这里只画出顶点:
设置 EdgeShapeFunction->g 时,每条边使用由图形基元和由函数 g 给定的指令绘制. 它可以采用三个或多个变量,形如 g[{ri,,rj},{vi,vj},lblij,],其中 rirj 是边的起点或终点的坐标,vivj 是起始和终止顶点,而 lblij 是为边指定的任意标签或者或者 None. EdgeShapeFunction->g 的明确设置重载 EdgeLabelsDirectedEdges 的设置.
这里以灰色箭头绘制边,其端点与顶点相距 0.3 的距离(在图的坐标系统中):
这里分别使用黑色和红色箭头显示边和自循环.

MultiedgeStyle

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

PackingLayout

选项 "PackingLayout" 指定用来排列非连通分量的方法. 该选项的可能值为 Automatic(默认)、"ClosestPacking""ClosestPackingCenter""Layered""LayeredLeft""LayeredTop""NestedGrid". 设置 "PackingLayout"->"ClosestPacking" 时,使用位四角法(polyomino method)[6] 从左上角开始排列并且使分量的距离尽可能接近. 设置 "PackingLayout"->"ClosestPackingCenter" 时,从中心开始排列分量. 设置 "PackingLayout"->"Layered" 时,从左上角开始分层排列. 设置 "PackingLayout"->"LayeredLeft" 或者 "PackingLayout"->"LayeredTop" 时,分别从上/左开始分层排列分量. 设置 "PackingLayout"->"NestedGrid" 时,在嵌套网格中排列各分量. 典型默认设置为 "PackingLayout"->"Layered",从最大边界框区域中的分量开始进行排列.
这里显示使用默认方法,对于不连通分量的排列:
这里显示使用 "ClosestPackingCenter" 方法,对于不连通分量进行排列:

PlotRangePadding

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

PlotStyle

PlotStyle 是由 LayeredGraphPlot 继承的图形函数的一个通用选项. 选项 PlotStyle 指定了绘制对象所采用的样式.
使用较粗的箭头绘制边,并且边和顶点的标签都是红色的:

SelfLoopStyle

选项 SelfLoopStyle 指定是否以及如何对与自身连接的顶点绘制自循环(loop). 该选项的可能值为 Automatic (默认)、TrueFalse 或者一个正实数. 设置 SelfLoopStyle->Automatic 时,如果图由规则列表指定,则显示自循环,但是如果由邻接矩阵给定,则不显示. 设置 SelfLoopStyle->δ 时,自循环使用直径 δ 绘制(相对于平均边长).
默认情况下,对于由规则列表指定的图,显示自循环:
如果图由邻接矩阵指定,则不显示自循环:
这里显示自循环,它的直径为平均边长的 0.3 倍:

VertexCoordinates

选项 VertexCoordinates 指明顶点坐标. 可能值为 None 或者坐标列表.
这里使用已知的坐标绘制 Petersen 图:
这里使用默认方法绘图:

VertexLabels

选项 VertexLabels 指定是否把顶点名称显示为标签. 该选项的可能值为 AllNoneAutomatic(默认). VertexLabels->All 显示标签. 对于由邻接矩阵指定的图,顶点标签采用连续整数 ,其中 n 是矩阵的大小. 对于由规则列表指定的图,标签是在规则中使用的表达式.VertexLabels->None 把每个顶点显示为一个点. 用户也可以在规则列表的任意位置中使用 Tooltip[vk,vlbl] 来为顶点 vk 指定其它工具提示条.
这里绘制图,其中标签以邻接矩阵索引的形式给出:
这里使用规则列表中指定的标签:
这里把顶点绘制为点,并且在工具提示条中显示顶点名称. 把光标放置在顶点上就可以看到标签:

VertexShapeFunction

VertexShapeFunction 选项指定图的边的图形表示. 该选项的可能值为 AutomaticNone、或者是一个给出图形基元和指令的合理组合的函数. 使用默认设置 Automatic,顶点显示为点.
默认情况下,顶点显示为点.
这里绘制相同的图,但是不绘制顶点:
设置 VertexShapeFunction->g 时,每个顶点使用由 g[ri,vi,] 给定的图形基元绘制,其中 ri 是顶点坐标,而 vi 是顶点标签. VertexShapeFunction->g 的明确设置重载 VertexLabels 的设置.
这里把顶点显示为黄色的圆盘:
示例

流程图

LayeredGraphPlot 帮助可视化流程图,例如应用在商业、经济或技术演讲中.
这里显示一个流程图:
这里显示一个从左流到右的流程图:

食物链

使用 LayeredGraphPlot 可视化食物链.
这里显示一个小的食物链:
这里显示另一个食物链:

Unix 的历史

LayeredGraphPlot 适用于可视化历史事件.
这里显示 Unix 的历史: