НачатьНачать бесплатно

Макеты сети в igraph

Пакет igraph предоставляет несколько встроенных алгоритмов компоновки для визуализации сетей. В зависимости от размера сети одни макеты могут лучше других передавать её структуру. Идеальный макет — тот, при котором рёбра пересекаются как можно реже. В этом упражнении вы познакомитесь с несколькими из множества доступных алгоритмов компоновки по умолчанию. Повторный запуск кода для каждого графика будет давать немного отличающийся вариант того же типа макета. Попробуйте сделать это несколько раз, чтобы найти наиболее удачную визуализацию вашей сети.

Это упражнение является частью курса

Анализ сетей в R

Посмотреть курс

Инструкции к упражнению

  • В функции plot() измените аргумент layout на layout_in_circle(), чтобы построить сеть в виде окружности.
  • В функции plot() измените аргумент layout на layout_with_fr(), чтобы применить алгоритм Фрухтермана–Рейнгольда.
  • Также можно задать макет вручную, передав матрицу координат (x, y) для каждой вершины. Используйте функцию layout_as_tree(), чтобы сформировать матрицу m с координатами, а затем передайте m в параметр layout функции plot().
  • Выбор подходящего макета может оказаться непростой задачей. К счастью, в 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 = ___)
Редактировать и запускать код