使用从源到目标的箭头将加权定向边添加到networkx图


import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import pylab
plt.rcParams['figure.figsize'] = [10, 10]
G = nx.DiGraph()
G.add_edges_from([('A', 'B'),('C','D'),('G','D')], weight=1)
G.add_edges_from([('D','A'),('D','E'),('B','D'),('D','E')], weight=2)
G.add_edges_from([('B','C'),('E','F')], weight=3)
G.add_edges_from([('C','F')], weight=4)

nodeopt = {
'node_color': 'white',
'node_size': 3500,
'node_shape': 'o',
'linewidths': 1,
'edgecolors' : 'black'
}
label_opt = {
'font_size': 13,
'font_color' : 'black',
}
edge_opt = {
'width': 3,
'edge_color' : 'black',
'arrowstyle' : '-|>',
'arrows' : True,
'arrowsize' : 12,
'connectionstyle' : 'arc3,rad=0.2'

}

##FOR PRINTING WEIGHTS ON THE EDGES
edge_labels=dict([((u,v,),d['weight'])
for u,v,d in G.edges(data=True)])
## EDIT THE EDGE COLORS 
red_edges = []
edge_colors = ['black' if not edge in red_edges else 'red' for edge in G.edges()]
#red_edges = [('C','D'),('D','A')]
#edge_colors = ['black' if not edge in red_edges else 'red' for edge in G.edges()]
## FOR CREATING LABELS OF THE NODES 
node_labels = {node:node for node in G.nodes()}; 

pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,**nodeopt)
nx.draw_networkx_labels(G, pos, labels=node_labels, **label_opt)
nx.draw_networkx_edges(G, pos, **edge_opt) 
nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels)
pylab.show()

你好,上面是我正在工作的代码。我能够得到加权边,但由于某种原因,尽管使用了";nx。DiGraph((";,有人能帮忙吗?

对于G.add_edges_from([('C','F'(],权重=4(的情况,我想要一个从节点C到F的箭头,权重为4

我通过参考库手册解决了这个问题:在draw_networkx_edges函数中,有一个参数用于指定节点大小。当你在两者中插入相同的值时,它会修复它!

nodeopt = {
'node_size' : 1400,
'node_color': 'white',
'node_shape': 'o',
'linewidths': 1,
'edgecolors' : 'black'
}
label_opt = {
'font_size': 13,
'font_color' : 'black',
}
edge_opt = {
'width': 3,
'edge_color' : 'black',
'arrowstyle' : '-|>',
'arrows' : True,
'arrowsize' : 22,
'connectionstyle' : 'arc3,rad=0.2',
'node_size' : 1400

}

正如我在评论中所建议的,节点太大了,以至于它们覆盖了箭头。适应的方法是在绘制时使用node_size参数,而不仅仅是节点。换言之,如果在edge_opt中添加一行,就可以返回箭头,如中所示

edge_opt = {
'node_size': 3500,
'width': 1,
'edge_color' : 'black',
'arrowstyle' : '-|>',
'arrows' : True,
'arrowsize' : 12,
'connectionstyle' : 'arc3,rad=0.2'

}

最新更新