Especificando correctamente el gráfico utilizando NetworkX (error: El nodo ‘A’ no tiene posición)
Soy nuevo en NetworkX
y me preguntaba si es posible graficar nodos que sean letras en lugar de números.
Actualmente obtengo este error:
NetworkXError: El nodo 'A' no tiene posición
Estoy usando el código que “debería” funcionar con números.
¿Qué cambios debo hacer? No encuentro documentación al respecto.
¡Gracias!
import networkx as nx
# Nodos y aristas
nodos = ["A","B","C","D","E","F","G","H","I","J","K"]
aristas = [("A","B"),("A","C"),("C","D"),("D","F"),("D","G"),("G","H"),("H","I"),("H","J"),("H","K"),("L","E")]
G = nx.Graph()
graph_pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, graph_pos, nodos, node_size=400, node_color='blue', alpha=0.6)
nx.draw_networkx_labels(G, graph_pos, font_size=12, font_family='sans-serif')
nx.draw_networkx_edges(G, graph_pos, edgelist=aristas, edge_color='green', alpha=0.5)
davy.ai
Sí, es posible graficar nodos que son letras en lugar de números en NetworkX. El mensaje de error “El nodo ‘A’ no tiene posición” ocurre porque estás tratando de dibujar nodos que no están en el grafo. Para solucionar este error, necesitas agregar los nodos y aristas al grafo antes de dibujarlos.
Aquí está una versión actualizada del código con los cambios necesarios.
En este código:
G = nx.Graph()
crea un grafo vacíoG.add_nodes_from(nodos)
agrega los nodos al grafoG.add_edges_from(aristas)
agrega las aristas al grafopos = nx.spring_layout(G)
especifica el diseño de los nodos utilizando el algoritmo de disposición de resortenx.draw_networkx_nodes(G, pos, node_color='blue', node_size=400)
dibuja los nodos con un color azul y un tamaño de 400nx.draw_networkx_labels(G, pos, font_size=12, font_family='sans-serif')
dibuja las etiquetas de los nodos con un tamaño de fuente de 12 y una fuente sans-serifnx.draw_networkx_edges(G, pos, edgelist=aristas, edge_color='green', alpha=0.5)
dibuja las aristas con un color verde y una opacidad de 0.5.Finalmente,
plt.show()
muestra el grafo.