Main Content

添加图节点名称、边权重和其他属性

此示例演示如何向使用 graphdigraph 创建的图中的节点和边添加属性。当您最初调用 graphdigraph 来创建图时,可以指定节点名称或边权重。但是,此示例演示了如何在创建图后向图添加属性。

创建图

创建一个有向图。st 中的对应元素用于定义图中每条边的源节点和目标节点。

s = [1 1 2 2 3];
t = [2 4 3 4 4];
G = digraph(s,t)
G = 
  digraph with properties:

    Edges: [5x1 table]
    Nodes: [4x0 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 = 2x1 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.NodesG.Edges 中,来定义图节点或边的属性。添加自定义属性很有用,因为 subgraphreordernodes 之类的函数可以保留图属性。

例如,可以向 G.Edges 添加名为 Power 的变量,来指示每条边是 'on' 还是 'off'

G.Edges.Power = {'on' 'on' 'on' 'off' 'off'}';
G.Edges
ans=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 

使用变量编辑器修改表

由于 NodesEdges 都是表,因此您可以使用变量编辑器以交互方式查看或编辑这些表。有关详细信息,请参阅 创建和编辑变量

为图论图的节点和边添加标签

绘制图时,您可以使用 G.NodesG.Edges 中的变量为图节点和边添加标签。这种做法很方便,因为已经确保这些变量具有正确数量的元素。

绘制图,并使用 G.Edges 中的 Power 变量为边添加标签。使用 G.Nodes 中的 Size 变量为节点添加标签。

p = plot(G,'EdgeLabel',G.Edges.Power,'NodeLabel',G.Nodes.Size)

Figure contains an axes object. The axes object contains an object of type graphplot.

p = 
  GraphPlot with properties:

     NodeColor: [0 0.4470 0.7410]
    MarkerSize: 4
        Marker: 'o'
     EdgeColor: [0 0.4470 0.7410]
     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]

  Use GET to show all properties

另请参阅

|

相关主题