You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用networkx绘制带权重有向图时箭头不显示的问题求助

问题解决:NetworkX有向图箭头不显示

问题原因

代码中edge_opt配置里的arrowstyle参数使用了HTML转义字符->,导致箭头样式解析错误,无法正常渲染有向箭头。

修复步骤

  • 将arrowstyle的值从'-|>'改为'-|>'(Python字符串中无需HTML转义,直接使用符号即可)
  • 保留arrows=True参数,这是启用有向箭头的核心配置

修改后的完整代码

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'
}

# 生成边权重标签
edge_labels=dict([((u,v,),d['weight'])
                 for u,v,d in G.edges(data=True)])

# 设置边颜色
red_edges = []
edge_colors = ['black' if not edge in red_edges else 'red' for edge in G.edges()]

# 生成节点标签
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()

效果说明

修改后,所有有向边都会显示正确的箭头,包括C->F这条权重为4的边,箭头会明确指向F节点。

内容的提问来源于stack exchange,提问作者Cindy Burker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:25:19