Как маркировать подключенные компоненты в отключенном графике? - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть некоторый отключенный граф, состоящий из трех связанных компонентов.Этот график создается следующими командами в igraph R:

library(igraph)
x1 <- c(1:7, 2, 8:14, 10, 15:21, 18)
x2 <- c(rep(0, 7), 1, rep(0, 7), 1, rep(0, 7), 1)
m <- cbind(x1, x2)
g <- graph.formula(1-2, 2-3, 3-4, 4-5, 5-6, 6-7, 2-8,
                   9-10, 10-11, 11-12, 12-13, 13-14, 14-15, 11-16,
                   17-18, 18-19, 19-20, 20-21, 21-22, 22-23, 20-24)
plot(g, layout = m, rescale = F, xlim = c(0.5, 21.5), vertex.size = 20,
     vertex.label = NA, edge.color = "black", vertex.color = "black")

Результирующий отключенный график представлен ниже: enter image description here

Я хочу обозначить каждыйотключенные компоненты буквой, например "A", "B" и "C".В качестве альтернативы, я хочу сделать несколько субтитров для всех подключенных компонентов в igraph R?

1 Ответ

0 голосов
/ 22 ноября 2018

Используйте components, чтобы получить идентификатор кластера.Чтобы расположить метки по горизонтали внутри каждого идентификатора, используйте tapply, чтобы вычислить среднюю точку значений x в «m».Для вертикального положения используйте min значений y и подходящее смещение.Используйте text для добавления меток.

m <- cbind(m, id = components(g)$membership)
xs <- tapply(m[ , "x1"], m[ , "id"], function(x) mean(range(x)))
ys <- tapply(m[ , "x2"], m[ , "id"], min)
plot(g, layout = m, rescale = F, xlim = c(0.5, 21.5), vertex.size = 20,
     vertex.label = NA, edge.color = "black", vertex.color = "black")
text(xs, ys - 0.6, LETTERS[1:3])

enter image description here

...