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

Matplotlib与Networkx绘制多自环图仅显示单个自环如何解决

NetworkX多自环可视化异常解决方案

NetworkX基于matplotlib的默认绘图接口不支持多自环渲染:同一节点的多个自环会使用相同的半径、偏移角度参数绘制,完全重叠后视觉上仅显示1个,和实际边数不一致。

方案1:使用pyvis库实现(推荐,交互性好,原生支持多重图)

pyvis是专门用于图可视化的库,原生支持MultiGraph/MultiDiGraph的多自环、多边渲染,不需要额外调整参数即可正常展示全部自环:

from pyvis.network import Network
import networkx as nx

g = nx.MultiDiGraph()
g.add_edge(0, 0)
g.add_edge(0, 1)
g.add_edge(1, 2)
g.add_edge(2, 2)
g.add_edge(2, 2)

# 初始化pyvis画布
net = Network(directed=True, notebook=False, height="600px", width="800px")
# 加载networkx格式的图
net.from_nx(g)
# 生成可视化HTML文件,打开即可看到带多个错开自环的交互图
net.write_html("multi_selfloop_graph.html")

方案2:基于matplotlib手动绘制多自环

如果需要保留matplotlib的静态输出形式,可以手动遍历自环,为每个自环设置不同的半径参数避免重叠:

import networkx as nx
import matplotlib.pyplot as plt
from matplotlib.patches import Arc

g = nx.MultiDiGraph()
g.add_edge(0, 0)
g.add_edge(0, 1)
g.add_edge(1, 2)
g.add_edge(2, 2)
g.add_edge(2, 2)

# 计算节点布局
pos = nx.spring_layout(g, seed=42)
fig, ax = plt.subplots(figsize=(6,4))

# 绘制非自环边
non_selfloop_edges = [e for e in g.edges if e[0] != e[1]]
nx.draw_networkx_edges(g, pos, edgelist=non_selfloop_edges, ax=ax, width=2)

# 绘制节点和标签
nx.draw_networkx_nodes(g, pos, ax=ax, node_color='white', edgecolors='black', node_size=500)
nx.draw_networkx_labels(g, pos, ax=ax, font_weight='bold')

# 手动批量绘制自环,每个自环依次增大半径避免重叠
selfloop_radius_step = 0.1
for node in g.nodes():
    selfloop_count = g.number_of_edges(node, node)
    for i in range(selfloop_count):
        radius = 0.1 + i * selfloop_radius_step
        x, y = pos[node]
        # 绘制圆弧自环
        arc = Arc((x, y), radius*2, radius*2, angle=0, theta1=0, theta2=270, 
                  edgecolor='black', linewidth=2, linestyle='-')
        ax.add_patch(arc)
        # 添加箭头标记
        ax.annotate('', xy=(x + radius*0.95, y - radius*0.1), xytext=(x + radius*0.9, y - radius*0.2),
                    arrowprops=dict(arrowstyle="->", color='black', linewidth=2))

plt.axis('off')
plt.show()

内容的提问来源于stack exchange,提问作者Arijit Panda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:18:03