主要内容

布局

改变图形的布局

描述

例子

布局(H更改图形的布局H采用了一种基于图形结构的自动选择布局方法。的布局函数修改XData而且YData的属性H

例子

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

例子

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

例子

全部折叠

控件创建并绘制图形“力”布局。

S = [1 1 1 1 1 6 6 6 6 6 6];T = [2 3 4 5 6 7 8 9 10 11];G =图(s,t);h = plot(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 = plot(G,“布局”“分层”);

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

方法更改图形的布局以使用“子”方法。

布局(h,“子”

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

控件创建并绘制图形“分层”布局方法。

S = [1 1 1 2 3 3 3 4 4];T = [2 4 5 6 2 4 7 8 1];G =有向图(s,t);h = plot(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 = graph(s,t,[],150);h = plot(G);

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

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

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

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

方法绘制图形“WeightEffect”名称-值对,使图边的长度与其权重成比例。

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

S = [1 1 1 1 1 2 2 2 3 3 3 3 3 3];T = [2 4 5 6 7 3 8 9 10 11 12 13 14];权重= randi([1 20],1,13);G =图(s,t,权重);p = plot(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” 三维力定向布局。

“迭代”-力导向布局迭代次数

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

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

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

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

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

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

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

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

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

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

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:布局(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”来指定2-D起始坐标(或使用“YStart”而且“ZStart”来指定三维起始坐标),然后力定向算法的迭代才会改变节点位置。

仅当方法“力”“force3”

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

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

节点的起始y坐标,指定为逗号分隔的对,由“YStart”一个节点坐标的向量。与一起使用此选项“XStart”来指定2-D起始坐标(或使用“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使用以前的输出重新启动算法。与执行50次迭代相比,执行100次迭代的算法的结果是不同的,然后从结束位置重新启动算法以执行50次迭代。

参考文献

[1] T.弗鲁克曼和E.莱因戈尔德。“通过力定向放置绘制图形。”软件-实践与经验.Vol. 21 (11), 1991, pp. 1129-1164。

[2]甘斯纳,E., E. Koutsofios, S. North, k . p Vo。画有向图的技巧IEEE软件工程汇刊.第19卷,1993,第214-230页。

[3]巴特,W.荣格尔,P.穆策尔。“简单高效的双层交叉计数。”图算法与应用杂志.Vol.8 (2), 2004, pp. 179-194。

[4]布兰德斯,U.和B.科普夫。"快速简单的水平坐标分配"信号.卷2265,2002,31-44页。

[5] Y. Koren。用特征向量画图:理论与实践计算机与数学及其应用.第49卷,2005,第1867-1888页。

版本历史

在R2015b中引入