plots - titles in r
Cómo extraer motivos en R con iGraph (2)
Aquí hay un rápido cómo hacerlo.
Si está interesado en las tríadas del vértice A , primero cree el subgráfico inducido que contiene A y sus vecinos inmediatos. Puede hacerlo a través de neighborhood()
e induced.subgraph()
o simplemente con graph.neighborhood()
.
Luego encuentra los motivos en este subgráfico, pero no con graph.motifs()
, sino con triad.census()
, porque eso cuenta todos los triples posibles, incluso los que no están conectados.
Luego elimine A de este subgrafo, y llame a triad.census()
nuevamente. La diferencia del vector de dos recuentos será exactamente los motivos que incluyen A.
Estoy intentando extraer motivos de 3 nodos en R usando el igraph
paquete. Me gustaría recuperar el número de motivos para cada vértice individual en el gráfico, que no parece posible desde la función graph.motifs ().
Entonces, para el gráfico de ejemplo:
testGraph = barabasi.game(10,
m = 5,
power = 2,
out.pref = TRUE,
zero.appeal = 0.5,
directed = TRUE)
Puedo usar graph.motifs()
para contar el número total de cada motivo de 3 nodos en todo el gráfico:
graph.motifs(testGraph,
size = 3)
[1] 0 0 26 0 16 0 2 58 0 0 0 0 0 0 0 0
Pero me gustaría saber la participación en el vértice individual. Entonces, ¿cuántos motivos (y de qué tipo) participa el vértice 1? ¿Alguien sabe una manera simple de hacer eso?
Aquí hay un ejemplo autónomo de la solución de Gabor:
testGraph = barabasi.game(10,
m = 5,
power = 0.6,
out.pref = TRUE,
zero.appeal = 0.5,
directed = TRUE)
# Label nodes to more easily keep track during subsets/deletions
V(testGraph)$name = c(''one'', ''two'', ''three'', ''four'', ''five'', ''six'', ''seven'', ''eight'', ''nine'', ''ten'')
subGraph = graph.neighborhood(testGraph, order = 1, V(testGraph)[1], mode = ''all'')[[1]]
allMotifs = triad.census(subGraph)
removeNode = delete.vertices(subGraph, ''one'')
node1Motifs = allMotifs - triad.census(removeNode)