Identificar los nodos más centrales en una red (usando Networkx)
Estoy intentando generar subgráficos que miren nodos específicos. Específicamente, me gustaría ver, usando diferentes colores y etiquetas, solo aquellos nodos que tienen centralidad de grado alta o centralidad de intermediación en mi gráfico. Sería aceptable usar un modelo de “Club de Karate de Zachary”, por ejemplo (mi gráfico es no dirigido).
Para calcular la centralidad de grado y la centralidad de intermediación, estoy utilizando las siguientes funciones (en NetworkX):
degCent = nx.degree_centrality(G)
betCent = nx.betweenness_centrality(G, normalized=True, endpoints=True)
Mi gráfico está formado por aproximadamente 5000 nodos (por lo que no es un gráfico muy grande) y solo estaría interesado en los 10 nodos principales basados en la centralidad de grado y de intermediación, solo para ver con quiénes están conectados estos nodos y dónde se encuentran dentro del gráfico.
Mi enfoque sería seleccionar los 10 nodos principales basados en la centralidad de grado y la centralidad de intermediación asignando un color diferente (verde si están en los primeros 10 de la lista de centralidad de grado/intermediación; de lo contrario, rojo), filtrando los nodos dentro de la red para seleccionar solo los de interés (también asignándoles una etiqueta, solo para ver dónde se encuentran en la red).
Cualquier ayuda y sugerencia será absolutamente bienvenida.
davy.ai
Si estás buscando generar subgrafos de tu grafo basados en la centralidad de grado y de intermediación, puedes usar el siguiente enfoque:
nx.degree_centrality(G)
ynx.betweenness_centrality(G, normalized=True, endpoints=True)
de NetworkX respectivamente.Este enfoque debería ayudarte a generar los subgrafos que estás buscando.