Visualizando com gráficos de matriz
É hora de experimentar seu primeiro método de visualização de grafos mais "elaborado": um gráfico de matriz. Para isso, o nxviz fornece a função matrix(). Essa função, como todas as funções de alto nível da API do nxviz, retorna um objeto de eixos do matplotlib que pode ser exibido com plt.show().
O nxviz é um pacote para visualizar grafos de forma racional. Nos bastidores, a função matrix utiliza nx.to_numpy_matrix(G), que retorna a forma matricial do grafo. Aqui, cada nó é uma coluna e uma linha, e uma aresta entre dois nós é indicada pelo valor 1. Ao fazer isso, porém, apenas os metadados weight são preservados; todos os outros metadados são perdidos, como você vai verificar usando uma instrução assert.
Um nx.from_numpy_matrix(A) correspondente permite criar rapidamente um grafo a partir de uma matriz NumPy. O tipo de grafo padrão é Graph(); se você quiser um DiGraph(), isso precisa ser especificado usando o argumento nomeado create_using, por exemplo (nx.from_numpy_matrix(A, create_using=nx.DiGraph)).
Por fim, matplotlib.pyplot e networkx já foram importados como plt e nx, respectivamente, e o grafo T já foi pré-carregado. Para simplificar e acelerar, fizemos uma amostragem de apenas 100 arestas da rede.
Este exercício faz parte do curso
Introdução à Análise de Redes em Python
Instruções do exercício
- Importe
matrixdenxviz. - Plote o grafo
Tcomo um gráfico de matriz. Para isso:- Crie o gráfico de matriz chamado
musando a funçãonv.matrix()comTpassado como argumento. - Exiba o gráfico usando
plt.show().
- Crie o gráfico de matriz chamado
- Converta o grafo para o formato de matriz e, em seguida, converta-o de volta para a forma do NetworkX a partir da matriz como um grafo direcionado. Isto já foi feito para você.
- Verifique que o campo de metadados
categoryé perdido de cada nó. Isso também já foi feito para você, então clique em 'Enviar Resposta' para ver os resultados!
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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()