主要内容

布局

改变图形图的布局

描述

例子

布局(H改变图形的布局H采用了一种基于图的结构自动选择布局的方法。的布局功能修改XDataYData的属性H

例子

布局(H方法可选地指定布局方法。方法可以“圆”“力”“分层”“子”“force3”,或“subspace3”

例子

布局(H方法名称,值使用由一个或多个名称-值对参数指定的附加选项。例如,布局(H,“力”,“迭代”,N)指定在计算力布局时使用的迭代次数布局(H,“分层”,“来源”,年代)使用带有源节点的分层布局年代包含在第一层。

例子

全部折叠

创建并绘制一个图表“力”布局。

S = [1 1 1 1 6 6 6 6 6];T = [2 3 4 5 6 7 8 9 10 11];图G = (s, t);h =情节(G,“布局”“力”);

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

将布局更改为默认的情节根据图的结构和属性确定。结果和使用是一样的情节(G)

布局(h)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

创建并绘制一个图表“分层”布局。

S = [1 1 1 2 2 3 3 4 5 5 6 7];T = [2 4 5 3 6 4 7 8 6 8 7 8];图G = (s, t);h =情节(G,“布局”“分层”);

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

控件更改图形的布局“子”方法。

布局(h,“子”

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

创建并绘制一个图表“分层”布局方法。

S = [1 1 1 2 3 3 4 4];T = [2 4 5 6 2 4 7 8 1];G =有向图(s, t);h =情节(G,“布局”“分层”);

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

使用布局函数通过指定源节点和水平方向来细化层次布局。

布局(h,“分层”“方向”“对”“源”1, [4])

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

绘制一个包含多个组件的图,然后展示如何使用“UseGravity”选项来改进可视化。

创建并绘制一个由150个节点分割成许多不相连组件的图。MATLAB®将图形组件置于网格上。

S = [1 3 5 7 7 10:100];T = [2 4 6 8 9 randi([10 100],1,91)];图G = (s t [], 150);h =情节(G);

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

更新图形对象的布局坐标,并指定“UseGravity”作为真正的因此,组件围绕原点呈放射状排列,为较大的组件分配更多的空间。

布局(h,“力”“UseGravity”,真正的)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

“WeightEffect”名称-值对,使图边的长度与它们的权值成比例。

创建并绘制带加权边的有向图。

S = [1 1 1 1 2 2 3 3 3 3 3];T = [2 4 5 6 7 3 8 9 10 11 12 13 14];Weights = randi([1 20],1,13);图G = (s t重量);p =情节(G,“布局”“力”“EdgeLabel”, G.Edges.Weight);

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

控件重新计算图形的布局“WeightEffect”名称-值对,以便每条边的长度与其权重成比例。这使得权值最大的边是最长的边。

布局(p,“力”“WeightEffect”“直接”

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

输入参数

全部折叠

输入图形图,指定为GraphPlot对象。使用有向图函数来创建图形,然后使用情节带有输出参数以返回GraphPlot对象。

例子:H =情节(G)

布局方法,指定为表中的选项之一。该表还列出了兼容的名称-值对,以进一步细化每个布局方法。

选项 描述 框架名称-值对
“汽车”(默认)

根据图形的尺寸和结构自动选择布局方法。

- - - - - -

“圆”

环形布局。将图形节点置于以半径为1的原点为圆心的圆上。

“中心”-圆形布局的中心节点

“力”

指定的布局[1].利用相邻节点之间的引力和遥远节点之间的斥力。

“迭代”-强制布局迭代次数

“WeightEffect”-边权值对布局的影响

“UseGravity”-重力切换布局与多个组件

“XStart”- - - - - -开始x对节点坐标

“YStart”- - - - - -开始y对节点坐标

“分层”

分层布局[2][3][4].将图节点放入一组层中,揭示层次结构。默认情况下,层向下(有向无圈图的箭头向下)。

“方向”-图层的方向

“源”-要包含在第一层的节点

“汇”-要包含在最后一层的节点

“AssignLayers”-层分配方法

“子”

子空间嵌入布局[5].在高维嵌入子空间中绘制图节点,然后将位置投影回2-D。默认情况下,子空间维度为100或节点总数,以较小的节点为准。

“维度”-嵌入子空间的维数

“force3” 3 d指定布局。

“迭代”-强制布局迭代次数

“WeightEffect”-边权值对布局的影响

“UseGravity”-重力切换布局与多个组件

“XStart”- - - - - -开始x对节点坐标

“YStart”- - - - - -开始y对节点坐标

“ZStart”- - - - - -开始z对节点坐标

“subspace3” 三维子空间嵌入布局。

“维度”-嵌入子空间的维数

例子:布局(H,“分层”)

例子:布局(H,“force3”、“迭代”,10)

例子:布局(H,“子”,“维度”,50)

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:布局(H,‘子’,‘维’,200)

全部折叠

强制定向布局迭代次数,指定为逗号分隔对,由“迭代”一个正的标量整数。

此选项仅在以下情况下可用方法“力”“force3”

例子:布局(H,“力”,“迭代”,250年)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

边权值对布局的影响,指定为由逗号分隔的对组成“WeightEffect”和这个表中的一个值。如果两个节点之间有多条边(如在每个方向都有一条边的有向图或多重图中),则在计算前将权值相加“WeightEffect”

此选项仅在以下情况下可用方法“力”“force3”

价值

描述

“没有”(默认)

边的权重不影响布局。

“直接”

边的长度与边的权重成正比,G.Edges.Weight.边的权值越大,边就越长。

“逆”

边长与边长权重成反比,1. / G.Edges.Weight.较大的边权值产生较短的边。

例子:布局(H,‘力’,‘WeightEffect’,“逆”)

重力切换用于带有多个组件的布局,指定为逗号分隔对组成“UseGravity”,要么“关闭”“上”真正的,或.的值“上”相当于真正的,“关闭”相当于

默认情况下,MATLAB®在网格上布局具有多个组件的图。网格可以掩盖较大组件的细节,因为它们被给予与较小组件相同的空间。与“UseGravity”设置为“上”真正的,多个分量会围绕原点呈放射状分布。这种布局以一种更自然的方式展开组件,并为更大的组件提供更多空间。

此选项仅在以下情况下可用方法“力”“force3”

例子:布局(H,‘力’,‘UseGravity’,真的)

数据类型:字符|逻辑

节点的起始x坐标,指定为逗号分隔对,由“XStart”和一个节点坐标向量。将此选项与“YStart”指定二维起始坐标(或用“YStart”“ZStart”来指定三维开始坐标),然后力向算法的迭代会改变节点位置。

此选项仅在以下情况下可用方法“力”“force3”

例子:布局(H,‘力’,‘XStart’,x, YStart, y)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

节点的起始y坐标,指定为逗号分隔的对,由“YStart”和一个节点坐标向量。将此选项与“XStart”指定二维起始坐标(或用“XStart”“ZStart”来指定三维开始坐标),然后力向算法的迭代会改变节点位置。

此选项仅在以下情况下可用方法“力”“force3”

例子:布局(H,‘力’,‘XStart’,x, YStart, y)

例子:布局(H,‘力’,‘XStart’,x, YStart, y, ZStart, z)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

节点的起始z坐标,指定为逗号分隔的对,由“ZStart”和一个节点坐标向量。将此选项与“XStart”“YStart”要指定起始xy,z在力定向算法迭代改变节点位置之前,节点坐标。

此选项仅在以下情况下可用方法“force3”

例子:布局(H,‘力’,‘XStart’,x, YStart, y, ZStart, z)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

分层

全部折叠

层的方向,指定为逗号分隔对组成“方向”,要么“下来”“了”“左”“对”.对于有向无环(DAG)图,箭头指向指示的方向。

此选项仅在以下情况下可用方法“分层”

例子:布局(H,“分层”,“方向”、“了”)

要包含在第一层中的节点,指定为由逗号分隔的对组成“源”以及一个或多个节点索引或节点名。

该表显示了通过数字节点索引或节点名引用一个或多个节点的不同方法。

形式 单独的节点 多个节点
节点索引

标量

例子:1

向量

例子:(1 2 3)

节点名称

特征向量

例子:“一个”

字符向量的单元格数组

例子:{“A”“B”“C”}

字符串标量

例子:“一个”

字符串数组

例子:(“A”“B”“C”)

此选项仅在以下情况下可用方法“分层”

例子:布局(H,“分层”,“来源”,[1 3 5])

要包含在最后一层中的节点,指定为由逗号分隔的对组成“汇”以及一个或多个节点索引或节点名。

此选项仅在以下情况下可用方法“分层”

例子:布局(H,“分层”,“下沉”,[2 4 6])

层赋值方法,指定为逗号分隔对组成“AssignLayers”这张表中有一个选项。

选项 描述
“汽车”(默认) 节点分配使用“尽快”“阿拉普”,以更紧凑的为准。
“尽快” 尽快。每个节点都被分配到第一个可能的层,因为它的所有前任都必须在更早的层中。
“阿拉普” 越晚越好。每个节点都被分配到最后一个可能的层,因为它的所有后继节点都必须在后面的层中。

此选项仅在以下情况下可用方法“分层”

例子:布局(H,“分层”,“AssignLayers”,“阿拉普”)

子空间

全部折叠

嵌入子空间的维数,指定为逗号分隔对,由“维度”一个正的标量整数。

  • 缺省值为分钟([100年numnodes (G)))

  • “子”布局中,整数必须大于等于2。

  • “subspace3”布局中,整数必须大于等于3。

  • 在这两种情况下,整数必须小于节点数。

此选项仅在以下情况下可用方法“子”“subspace3”

例子:布局(H,‘子’,‘维’,d)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

全部折叠

圆形布局中的中心节点,指定为逗号分隔的对,由“中心”和这个表中的一个值。

价值 例子
标量节点索引 1
字符向量节点名 “一个”
字符串标量节点名 “一个”

此选项仅在以下情况下可用方法“圆”

例子:布局(H,“圆”,“中心”,3)把节点3放在中心。

例子:布局(H,“圆”,“中心”、“Node1”)放置名为“Node1”的中心。

提示

  • 使用布局名称-值对,以在绘制图形时更改其布局。例如,情节(G,“布局”,“圆”)块图G以圆形布局。

  • 当使用“力”“force3”布局方法,最好的做法是使用更多的迭代算法而不是使用XStartYStart,ZStart使用以前的输出重新启动算法。执行100次迭代的算法与执行50次迭代,然后从结束位置重新启动算法再执行50次迭代的结果是不同的。

参考文献

T. Fruchterman和E. Reingold。“力指向放置的图形绘制。”软件-实践和经验.第21卷(11),1991,第1129-1164页。

甘斯纳,E. Koutsofios, S. North和k - p Vo。"一种绘制有向图的技术"IEEE软件工程汇刊.第19卷,1993年,214-230页。

Barth, W., M. Juenger和P. Mutzel。“简单高效的双层交叉计数。”图算法与应用学报.第2卷第2期,2004年,页179-194。

[4] Brandes, U, B. Koepf。“快速简单的水平坐标分配。”信号.2002年第2265卷,第31-44页。

[5] y科伦。用特征向量作图:理论与实践。计算机与数学应用.第49卷,2005年,页1867-1888。

介绍了R2015b