Main Content

그래프 노드 이름, 간선 가중치, 기타 특성(Attribute) 추가하기

이 예제에서는 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]

노드 이름 추가하기

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'}

간선 가중치 추가하기

변수 WeightG.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.NodesG.Edges에 추가할 수 있습니다. subgraphreordernodes 같은 함수는 그래프 특성을 유지하므로 사용자 지정 특성을 추가하는 것이 유용할 수 있습니다.

예를 들어, 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 

변수 편집기를 사용하여 테이블 수정하기

NodesEdges는 모두 테이블이므로 변수 편집기를 사용하여 대화형 방식으로 테이블을 보거나 편집할 수 있습니다. 자세한 내용은 변수 만들고 편집하기 항목을 참조하십시오.

그래프 플롯의 노드와 간선에 레이블 지정하기

그래프를 플로팅할 때 G.NodesG.Edges의 변수를 사용하여 그래프 노드와 그래프 간선에 레이블을 지정할 수 있습니다. 이러한 변수는 이미 올바른 요소 개수를 가지도록 보장되므로 이 방법을 사용하는 것이 간편합니다.

그래프를 플로팅하고 G.EdgesPower 변수를 사용하여 간선에 레이블을 지정합니다. G.NodesSize 변수를 사용하여 노드에 레이블을 지정합니다.

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

참고 항목

|

관련 항목