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 = ___)