如何在networkx绘图中显示DiGraph有向图的边方向箭头?
解决方案
你使用NetworkX绘制有向图不显示箭头,可通过显式指定箭头参数、调整绘图顺序实现,修改后的可运行代码如下:
import networkx as nx import matplotlib.pyplot as plt G = nx.DiGraph() time = [1100,2000,1500] a = [[1, 2], [1, 3], [2, 3]] G.add_edges_from(a) pos=nx.spring_layout(G) # 先绘制有向边,显式开启箭头配置 nx.draw_networkx_edges(G, pos, arrows=True, arrowstyle='->', arrowsize=20, edge_color='black') # 绘制节点 nx.draw_networkx_nodes(G, pos, node_size=time[:len(pos)], node_color='Gray', node_shape='o') # 绘制节点文本标签 nx.draw_networkx_labels(G, pos) # 绘制边标签 edge_labels = ['A', 'B', 'C'] lst = [[1, 2], [1, 3], [2, 3]] nx.draw_networkx_edge_labels(G,pos,edge_labels=dict(zip(map(tuple,lst), edge_labels))) # 隐藏坐标轴 plt.axis('off') # 渲染显示图像 plt.show()
关键配置说明
- 拆分绘图逻辑,显式调用
nx.draw_networkx_edges绘制边,添加arrows=True参数强制开启箭头渲染,同时可通过arrowstyle自定义箭头样式、arrowsize调整箭头大小,避免默认配置下箭头不显示或者过小 - 调整绘图顺序为「边→节点→标签」,避免节点元素遮挡箭头
- 补充matplotlib渲染逻辑,移除无意义的
G.size(500)语句(该方法用于返回图的边权总和,无绘图控制作用)
内容的提问来源于stack exchange,提问作者Md.Shams Araf Shovon
相关产品推荐
相关产品推荐

