添加边权重以绘制networkx中的输出

smi*_*dha 19 python graph networkx

我正在使用networkx包在python中做一些图论.我想将图形边缘的权重添加到绘图输出中.我怎样才能做到这一点?

例如,如何修改以下代码以获得所需的输出?

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")
Run Code Online (Sandbox Code Playgroud)

我希望0.5和9.8出现在图中它们所指的边缘上.

Mar*_*ler 26

你必须打电话nx.draw_networkx_edge_labels(),这将允许你...绘制networkX边缘标签:)

编辑:完整修改源

#!/usr/bin/python
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)
labels = nx.get_edge_attributes(G,'weight')
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
plt.savefig(<wherever>)
Run Code Online (Sandbox Code Playgroud)


Jul*_*lio 17

我喜欢这样做:

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)
Run Code Online (Sandbox Code Playgroud)