グラフのノード名、エッジの重みおよび他の属性の追加
この例では、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: [5x1 table] Nodes: [4x0 table]
ノード名の追加
G.Nodes
table に変数 Name
を追加することにより、グラフにノード名を追加します。N = numnodes(G)
である場合に、変数 Name
は、文字ベクトルまたは string 配列の N
行 1
列の cell 配列として指定しなければなりません。ノード名を追加する際、変数 Name
を使用することは重要です。それは、この変数名が一部のグラフ関数で特別に扱われるからです。
G.Nodes.Name = {'First' 'Second' 'Third' 'Fourth'}';
新しい Nodes
table を表示します。
G.Nodes
ans=4×1 table
Name
__________
{'First' }
{'Second'}
{'Third' }
{'Fourth'}
テーブル インデックスを使用してノード 1 と 4 の名前を表示します。
G.Nodes.Name([1 4])
ans = 2x1 cell
{'First' }
{'Fourth'}
エッジの重みの追加
G.Edges
table に変数 Weight
を追加することにより、グラフにエッジの重みを追加します。変数 Weight
は M
行 1 列の数値ベクトルでなければなりません。ここで、M = numedges(G)
です。エッジの重みを追加する際、変数 Weight
を使用することは重要です。それは、この変数名が一部のグラフ関数で特別に扱われるからです。
G.Edges.Weight = [10 20 30 40 50]';
新しい Edges
table を表示します。
G.Edges
ans=5×2 table
EndNodes Weight
________________________ ______
{'First' } {'Second'} 10
{'First' } {'Fourth'} 20
{'Second'} {'Third' } 30
{'Second'} {'Fourth'} 40
{'Third' } {'Fourth'} 50
table インデックスを使用して G.Edges
の 1 行目と 3 行目を表示します。
G.Edges([1 3],:)
ans=2×2 table
EndNodes Weight
________________________ ______
{'First' } {'Second'} 10
{'Second'} {'Third' } 30
カスタム属性の追加
原則として、G.Nodes
と G.Edges
にはグラフのノードまたはエッジの属性を定義するどのような変数も追加できます。subgraph
や reordernodes
などの関数ではグラフ属性が保持されるため、カスタム属性を追加すると便利です。
たとえば、Power
という名前の変数を G.Edges
に追加して、各エッジが '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'}
Size
という名前の変数を G.Nodes
に追加して、各ノードの物理サイズを示します。
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
はどちらも table であるため、変数エディターを使用して対話的にその table を表示または編集できます。詳細については、変数の作成と編集を参照してください。
グラフ プロットにおけるノードとエッジのラベル付け
グラフをプロットする際、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 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