시작하기무료로 시작하기

igraph 네트워크 레이아웃

igraph 패키지는 네트워크 시각화를 위한 여러 가지 기본 레이아웃 알고리즘을 제공합니다. 네트워크의 크기에 따라 구조를 더 효과적으로 보여 주는 레이아웃이 달라질 수 있어요. 이상적으로는 네트워크에서 엣지들이 서로 교차하는 횟수를 최소화하는 레이아웃이 가장 좋습니다. 이 연습 문제에서는 기본 제공 레이아웃 알고리즘 중 일부만 살펴보겠습니다. 각 플롯의 코드를 다시 실행하면 같은 레이아웃 유형이라도 약간씩 다른 결과가 나오는데, 이를 몇 번 반복해 보면 네트워크에 가장 보기 좋은 시각화를 찾는 데 도움이 됩니다.

이 연습은 강의의 일부입니다

R로 하는 네트워크 분석

강의 보기

연습 안내

  • plot 함수에서 layout 인수를 layout_in_circle()로 바꿔 원형 네트워크를 그리세요.
  • plot 함수에서 layout 인수를 layout_with_fr()로 바꿔 Fruchterman-Reingold 레이아웃으로 네트워크를 그리세요.
  • 각 정점의 (x, y) 좌표 행렬을 제공해 레이아웃을 직접 지정할 수도 있어요. 여기서는 layout_as_tree() 함수를 사용해 좌표 행렬 m을 만든 뒤, plot()layout 인수에 m을 넘겨서 플롯하세요.
  • 올바른 레이아웃을 고르기가 막막할 수 있습니다. 다행히 igraph에는 주어진 그래프 객체에 가장 적절한 레이아웃 함수를 선택하려고 시도하는 layout_nicely()가 있어요. 이 함수를 사용해 좌표 행렬 m1을 만들고, 해당 좌표로 네트워크를 플로팅하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

library(igraph)

# Plot the graph object g1 in a circle layout
plot(g1, vertex.label.color = "black", layout = ___(g1))

# Plot the graph object g1 in a Fruchterman-Reingold layout 
plot(g1, vertex.label.color = "black", layout = ___(g1))

# Plot the graph object g1 in a Tree layout 
m <- ___(g1)
plot(g1, vertex.label.color = "black", layout = m)

# Plot the graph object g1 using igraph's chosen layout 
___ <- layout_nicely(___)
plot(___, vertex.label.color = "black", layout = ___)
코드 편집 및 실행