添加图节点名称、边权重和其他属性
此示例演示如何向使用 graph 和 digraph 创建的图中的节点和边添加属性。当您最初调用 graph 或 digraph 来创建图时,可以指定节点名称或边权重。但是,此示例演示了如何在创建图后向图添加属性。
创建图
创建一个有向图。s 和 t 中的对应元素用于定义图中每条边的源节点和目标节点。
s = [1 1 2 2 3]; t = [2 4 3 4 4]; G = digraph(s,t)
G =
digraph with properties:
Edges: [5×1 table]
Nodes: [4×0 table]
添加节点名称
通过将变量 Name 添加到 G.Nodes 表中来向图中添加节点名称。Name 变量必须指定为 N×1 字符向量元胞数组或字符串数组,其中 N = numnodes(G)。添加节点名称时请务必使用 Name 变量,因为该变量名称会被一些图函数进行特殊处理。
G.Nodes.Name = {'First' 'Second' 'Third' 'Fourth'}';查看新的 Nodes 表。
G.Nodes
ans=4×1 table
Name
__________
{'First' }
{'Second'}
{'Third' }
{'Fourth'}
使用表索引查看节点 1 和 4 的名称。
G.Nodes.Name([1 4])
ans = 2×1 cell
{'First' }
{'Fourth'}
添加边权重
通过将变量 Weight 添加到 G.Edges 表中来向图添加边权重。Weight 变量必须是 M×1 数值向量,其中 M = numedges(G)。添加边权重时请务必使用 Weight 变量,因为该变量名称会被一些图函数进行特殊处理。
G.Edges.Weight = [10 20 30 40 50]';
查看新的 Edges 表。
G.Edges
ans=5×2 table
EndNodes Weight
________________________ ______
{'First' } {'Second'} 10
{'First' } {'Fourth'} 20
{'Second'} {'Third' } 30
{'Second'} {'Fourth'} 40
{'Third' } {'Fourth'} 50
使用表索引查看 G.Edges 的第一行和第三行。
G.Edges([1 3],:)
ans=2×2 table
EndNodes Weight
________________________ ______
{'First' } {'Second'} 10
{'Second'} {'Third' } 30
添加自定义属性
原则上,您可以将任何变量添加到 G.Nodes 和 G.Edges 中,来定义图节点或边的属性。添加自定义属性很有用,因为 subgraph 和 reordernodes 之类的函数可以保留图属性。
例如,可以向 G.Edges 添加名为 Power 的变量,来指示每条边是 'on' 还是 'off'。
G.Edges.Power = {'on' 'on' 'on' 'off' 'off'}';
G.Edgesans=5×3 table
EndNodes Weight Power
________________________ ______ _______
{'First' } {'Second'} 10 {'on' }
{'First' } {'Fourth'} 20 {'on' }
{'Second'} {'Third' } 30 {'on' }
{'Second'} {'Fourth'} 40 {'off'}
{'Third' } {'Fourth'} 50 {'off'}
向 G.Nodes 添加名为 Size 的变量,来指示每个节点的实际大小。
G.Nodes.Size = [10 20 10 30]'; G.Nodes
ans=4×2 table
Name Size
__________ ____
{'First' } 10
{'Second'} 20
{'Third' } 10
{'Fourth'} 30
使用变量编辑器修改表
由于 Nodes 和 Edges 都是表,因此您可以使用变量编辑器以交互方式查看或编辑这些表。有关详细信息,请参阅 创建和编辑变量。
为图论图的节点和边添加标签
绘制图时,您可以使用 G.Nodes 和 G.Edges 中的变量为图节点和边添加标签。这种做法很方便,因为已经确保这些变量具有正确数量的元素。
绘制图,并使用 G.Edges 中的 Power 变量为边添加标签。使用 G.Nodes 中的 Size 变量为节点添加标签。
p = plot(G,'EdgeLabel',G.Edges.Power,'NodeLabel',G.Nodes.Size)

p =
GraphPlot with properties:
NodeColor: [0.0660 0.4430 0.7450]
MarkerSize: 4
Marker: 'o'
EdgeColor: [0.0660 0.4430 0.7450]
LineWidth: 0.5000
LineStyle: '-'
NodeLabel: {'10' '20' '10' '30'}
EdgeLabel: {'on' 'on' 'on' 'off' 'off'}
XData: [2 1.5000 1 2]
YData: [4 3 2 1]
ZData: [0 0 0 0]
Show all properties