Gráfico de ego usando Networkx en Python

Requisito previo: gráficos , conceptos básicos de Networkx

La red Ego es un tipo especial de red que consta de un Node central y todos los demás Nodes conectados directamente a él. El Node central se conoce como ego , mientras que los otros Nodes circundantes conectados directamente a él se conocen como alters . Las redes de ego se utilizan principalmente para analizar conexiones sociales, vínculos y relaciones. La red que se muestra a continuación es una ilustración de Ego Network. El Node central (ego) se muestra como circular rodeado por los Nodes vecinos (alter).

La red Ego es ampliamente utilizada en el análisis de redes sociales. La hipótesis básica sobre las redes del ego es que los lazos fuertes son homófilos. Homófilo es la tendencia de las personas que están socialmente conectadas de alguna manera a mostrar ciertos rasgos o similitudes entre sí. En palabras simples, las personas de ideas afines están fuertemente conectadas de alguna manera. La red del ego nos ayuda a identificar estas conexiones ocultas.

Las siguientes funciones son atendidas por Ego Networks:

  • Propagación de la información de manera eficiente.
  • Creación de sentido a partir de enlaces, por ejemplo: enlaces sociales, relaciones.
  • Acceso a recursos, generación eficiente de rutas de conexión.
  • Detección de comunidades, identificación de la formación de grupos.
  • Análisis de los lazos entre individuos para el apoyo social.

La forma más sencilla de implementar una red ego en cualquier base de datos de gráficos es mediante la biblioteca Networkx. Proporciona muchas funciones predefinidas para el análisis y visualización de redes.

Networkx: Networkx es un paquete de Python para la creación, análisis y estudio de la naturaleza de redes complejas. Es una de las bibliotecas de Python más populares utilizadas para el análisis de redes.

Instalación del paquete:

pip install networkx

La biblioteca Networkx proporciona el método ego_graph() para generar una red ego a partir de cualquier gráfico. El método toma dos parámetros obligatorios y cuatro parámetros opcionales adicionales.

Sintaxis: ego_graph(G, n, radio=1, centro=Verdadero, no dirigido=Falso, distancia=Ninguna)

Parámetros:

  • G (gráfico): un gráfico NetworkX (la red principal en cuya red ego se creará)
  • N (Node) – Un solo Node (Ego/Node central de la red ego)
  • Radio (número, opcional): incluye todos los vecinos de distancia <= radio de n.
  • Centro (bool, opcional): si es falso, no incluya el Node central (ego) en el gráfico
  • No dirigido (bool, opcional): si es verdadero, use tanto los vecinos internos como externos de los gráficos dirigidos.
  • Distancia (clave, opcional): use la clave de datos de borde especificada como distancia. Por ejemplo, si estableces distance=’weight’, se usará el peso del borde para medir la distancia desde el Node n.

Creando una red de muestra

Estamos tomando una red de muestra con pocos Nodes interconectados entre sí. En este ejemplo, los Nodes son – (A, B, C, D, E, F, G, H), de estos Nodes se toma un Node como el Node central (ego), en nuestro caso hemos tomado A como el ego. El siguiente código crea y muestra nuestra red de muestra.

Ejemplo:

Python3

# import networkx for graph generation
import networkx as nx
  
# import matplotlib library
import matplotlib.pyplot as plt
  
# generation of a sample graph
G = nx.Graph()
G.add_edges_from([('A', 'B'), ('A', 'C'), 
                  ('B', 'C'), ('E', 'F'),
                  ('D', 'E'), ('A', 'D'), 
                  ('D', 'G'), ('C', 'F'),
                  ('D', 'F'), ('E', 'H')])
  
# Defining ego as large and red
# while alters are in lavender
# Let 'A' be the ego
ego = 'A'
pos = nx.spring_layout(G)
nx.draw(G, pos, node_color = "lavender", 
        node_size = 800, with_labels = True)
  
options = {"node_size": 1200, "node_color": "r"}
nx.draw_networkx_nodes(G, pos, nodelist=[ego], **options)
plt.show()

Producción:

La red de muestra (Ego – A)

El Node A se define como ego y, por lo tanto, se muestra en rojo.

Creando una red de ego

El siguiente código crea y muestra la red de ego considerando el Node A como el ego.

Python3

# create ego network
hub_ego = nx.ego_graph(G, ego)
  
# showing the ego network
nx.draw(hub_ego, pos, node_color="lavender", 
        node_size = 800, with_labels = True)
  
nx.draw_networkx_nodes(
  hub_ego, pos, nodelist = [ego], **options)
  
plt.show()

Producción:

Red de ego (Ego – A, Alter – [B, C, D])

Publicación traducida automáticamente

Artículo escrito por rishujamaiyar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *