그래프 노드 이름, 간선 가중치, 기타 특성(Attribute) 추가하기
이 예제에서는 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
테이블에 변수 Name
을 추가하여 그래프에 노드 이름을 추가합니다. Name
변수는 N
×1
크기의 '문자형 벡터로 구성된 셀형 배열' 또는 'string형 배열'로 지정해야 합니다(여기서 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
사용자 지정 특성(Attribute) 추가하기
원칙적으로, 사용자는 그래프 노드나 그래프 간선의 특성을 정의하는 변수를 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
는 모두 테이블이므로 변수 편집기를 사용하여 대화형 방식으로 테이블을 보거나 편집할 수 있습니다. 자세한 내용은 변수 만들고 편집하기 항목을 참조하십시오.
그래프 플롯의 노드와 간선에 레이블 지정하기
그래프를 플로팅할 때 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