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

Визуализация важных вершин и рёбер

В наборе данных о кори есть одна особенность: для трёх человек неизвестно, кто именно заразил их. Один из них — вершина 184 — по всей видимости, стал источником распространения болезни для многих других, хотя напрямую заразил сравнительно немногих. Поскольку у вершины 184 нет входящих рёбер, её посредническая центральность (betweenness) кажется низкой. Чтобы лучше понять роль этой вершины, можно визуализировать геодезические расстояния от неё до остальных вершин сети. В этом упражнении вы построите такой график для данного «нулевого пациента».

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

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

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

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

  • С помощью make_ego_graph() создайте подграф нашей сети, включающий вершины, связанные с вершиной 184. Первый аргумент — исходный граф g. Второй аргумент — максимальное число связей, через которое любая вершина должна быть соединена с интересующей нас вершиной. Здесь можно использовать diameter(), чтобы получить длину наидлиннейшего пути в сети. Третий аргумент — интересующая нас вершина, то есть 184. Последний аргумент — режим: в данном случае включите все связи независимо от направления.
  • Создайте объект dists, содержащий геодезическое расстояние от вершины 184 до каждой другой вершины. Для вычисления используйте функцию distances().
  • Назначьте каждой вершине атрибут color. Цвет выбирается в зависимости от геодезического расстояния. Цветовая палитра colors имеет длину, равную максимальному геодезическому расстоянию плюс единица — это позволяет отображать вершины одинакового расстояния одним цветом, а «нулевому пациенту» присвоить собственный цвет.
  • Используйте plot() для визуализации сети g184. В качестве подписей вершин укажите геодезические расстояния dists.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Make an ego graph
g184 <- ___(g, ___(g), nodes = '184', mode = c("all"))[[1]]

# Get a vector of geodesic distances of all vertices from vertex 184 
dists <- ___(g184, "184")

# Create a color palette of length equal to the maximal geodesic distance plus one.
colors <- c("black", "red", "orange", "blue", "dodgerblue", "cyan")

# Set color attribute to vertices of network g184.
V(___)$color <- colors[dists+1]

# Visualize the network based on geodesic distance from vertex 184 (patient zero).
___(___, 
     vertex.label = ___, 
     vertex.label.color = "white",
     vertex.label.cex = .6,
     edge.color = 'black',
     vertex.size = 7,
     edge.arrow.size = .05,
     main = "Geodesic Distances from Patient Zero"
     )
Редактировать и запускать код