15.4: Visualización de redes con NetworkX
- Page ID
- 115866
NetworkX también proporciona funciones para visualizar redes. No son tan potentes como otro software más especializado 1, pero siguen siendo bastante útiles y útiles, especialmente para la visualización de redes pequeñas y medianas. Esas funciones de visualización dependen de las funciones definidas en matplotlib (pylab), por lo que necesitamos importarlo antes de visualizar las redes.
La forma más sencilla es usar la función draw
de NetworkX:
El resultado se muestra en la Fig. 15.4.1. Los círculos rojos representan los nodos, y las líneas negras que los conectan representan los bordes. Por defecto, el diseño de los nodos y bordes se determina automáticamente por el algoritmo dirigido a la fuerza Fruchterman-Reingold [62] (llamado “disposición de resorte” en NetworkX), que realiza una simulación pseudo-física de los movimientos de los nodos, asumiendo que cada borde es un resorte con un fijo distancia de equilibrio. Este algoritmo heurístico tiende a acercar grupos de nodos bien conectados entre sí, haciendo que el resultado de la visualización sea más significativo y estéticamente más agradable.
Hay varios otros algoritmos de diseño, como se muestra en el Código 15.12 y la Fig.15.5.1. Además, hay muchas opciones que puedes usar para personalizar los resultados de visualización (ver Código 15.13 y Fig. 15.4.3). Consulte la documentación en línea de NetworkX para obtener más información sobre lo que puede hacer.
Visualice las siguientes gráficas. Buscarlos en la documentación en línea de NetworkX para aprender a generarlos.
• Un “gráfico hipercubo” de cuatro dimensiones.
• Un “gráfico de escalera” de longitud 5.
• Un “gráfico de barra” hecho de dos gráficos completos de 20 nodos que están conectados por un solo borde.
• Un “gráfico de rueda” compuesto por 100 nodos.
Visualiza la red social que creaste en el Ejercicio 15.3.2. Prueba varias opciones para personalizar el resultado a tu preferencia.
1 Por ejemplo, Gephi (http://gephi.github.io/
) puede manejar redes mucho más grandes, y tiene muchos más algoritmos de incrustación de nodos que NetworkX.