Visualización con gráficos de matriz
Es momento de probar tu primer método de visualización de grafos "avanzado": un gráfico de matriz. Para ello, nxviz ofrece una función matrix(). Esta función, como todas las funciones de la API de alto nivel de nxviz, devuelve un objeto de ejes de matplotlib que puedes mostrar con plt.show().
nxviz es un paquete para visualizar grafos de forma racional. Internamente, la función matrix utiliza nx.to_numpy_matrix(G), que devuelve la forma matricial del grafo. Aquí, cada nodo es una columna y una fila, y una arista entre dos nodos se indica con el valor 1. Al hacerlo, sin embargo, solo se preserva la metainformación weight; el resto de metadatos se pierden, como comprobarás usando una sentencia assert.
La función correspondiente nx.from_numpy_matrix(A) permite crear rápidamente un grafo a partir de una matriz de NumPy. El tipo de grafo por defecto es Graph(); si quieres convertirlo en un DiGraph(), debes especificarlo usando el argumento de palabra clave create_using, p. ej. (nx.from_numpy_matrix(A, create_using=nx.DiGraph)).
Una última nota: matplotlib.pyplot y networkx ya se han importado como plt y nx, respectivamente, y el grafo T ya está precargado. Para simplificar y acelerar, hemos muestreado solo 100 aristas de la red.
Este ejercicio forma parte del curso
Introducción al análisis de redes en Python
Instrucciones del ejercicio
- Importa
matrixdesdenxviz. - Dibuja el grafo
Tcomo un gráfico de matriz. Para hacerlo:- Crea el gráfico de matriz llamado
musando la funciónnv.matrix()pasandoTcomo argumento. - Muestra la gráfica con
plt.show().
- Crea el gráfico de matriz llamado
- Convierte el grafo a formato matricial y luego vuelve a convertirlo a la forma de NetworkX a partir de la matriz como grafo dirigido. Esto ya está hecho por ti.
- Comprueba que el campo de metadatos
categoryse pierde en cada nodo. Esto también está hecho por ti, así que pulsa "Submit Answer" para ver los resultados.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Import nxviz
____
# Create the matrix plot: m
m = ____
# Display the plot
____
# Convert T to a matrix format: A
A = nx.to_numpy_matrix(T)
# Convert A back to the NetworkX form as a directed graph: T_conv
T_conv = nx.from_numpy_matrix(A, create_using=nx.DiGraph())
# Check that the `category` metadata field is lost from each node
for n, d in T_conv.nodes(data=True):
assert 'category' not in d.keys()