R: gráficos de "conexión"

Nov 24 2020

Usando R, creé y tracé un gráfico:

library(igraph)
library(igraphdata)
data(karate)

#cluster
cfg <- cluster_fast_greedy(karate)

#plot entire graph
plot(cfg, karate)

#plot first subgraph

a = induced_subgraph(karate, cfg[[1]])
plot(a)

#plot second subgraph

b = induced_subgraph(karate, cfg[[2]])
plot(b)

#plot third subgraph

c = induced_subgraph(karate, cfg[[3]])
plot(c)

¿Es posible escribir algún código que muestre qué gráfico está conectado a qué gráfico?

Ejemplo: el gráfico verde está conectado al naranja y al violeta. el gráfico violeta solo está conectado al gráfico verde. y el gráfico naranja está conectado al gráfico verde

("a" es el gráfico naranja, "b" es el gráfico verde, "c" es el gráfico púrpura)

b: c y a

c: b

a: b

Respuestas

1 BenNutzer Nov 25 2020 at 08:58

Para el caso binario, donde la pregunta es si existe una conexión entre comunidades o no, puede hacer lo siguiente. Primero, contrate las comunidades en función de su membresía (pertenecientes a "a", "b" o "c").

V(karate)$mem <- membership(cfg) g <- contract.vertices(karate, V(karate)$mem, vertex.attr.comb = "ignore")

En segundo lugar, elimine bucles y bordes múltiples:

g <- simplify(g)

Finalmente, extraiga los nodos adyacentes (que ahora equivalen a comunidades después de contratarlos arriba):

sapply(1:vcount(g), function(x) adjacent_vertices(g, x))