Estoy haciendo algo de teoría de grafos en Python usando el paquete networkx. Me gustaría agregar los pesos de los bordes de mi gráfico a la salida del gráfico. ¿Cómo puedo hacer esto?

Por ejemplo, ¿cómo modificaría el siguiente código para obtener el resultado deseado?

import networkx as nx
import matplotlib.pyplot as plt

G=nx.Graph()
i=1
G.add_node(i,pos=(i,i))
G.add_node(2,pos=(2,2))
G.add_node(3,pos=(1,0))
G.add_edge(1,2,weight=0.5)
G.add_edge(1,3,weight=9.8)
pos=nx.get_node_attributes(G,'pos')
nx.draw(G,pos)
plt.savefig("path.png")

Me gustaría que aparecieran 0,5 y 9,8 en los bordes a los que se refieren en el gráfico.

39
smilingbuddha 6 feb. 2015 a las 21:12

2 respuestas

La mejor respuesta

Me gusta hacerlo así:

import matplotlib.pyplot as plt
pos=nx.spring_layout(G) # pos = nx.nx_agraph.graphviz_layout(G)
nx.draw_networkx(G,pos)
labels = nx.get_edge_attributes(G,'weight')
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
6
willcrack 26 nov. 2020 a las 14:44