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

如何优化Networkx自环图可视化?放大自环提升显示效果

如何放大Networkx绘制的有向图自环

当前用Networkx绘制有向图时,自环尺寸过小,显示效果差,可通过以下两种方式优化:

方法1:调整节点参数与自环弧度

Networkx的draw_networkx虽无直接控制自环大小的参数,但可通过增大节点尺寸、调整自环弧度来改善视觉效果:

G = nx.DiGraph()
G.add_nodes_from(my_graph.vertex_list)
G.add_weighted_edges_from(my_graph.edges_list)
weight = nx.get_edge_attributes(G, 'weight')

nx.draw_networkx(G, with_labels=True, pos=my_graph.position, 
                 node_size=500,  # 增大节点尺寸,自环会同步放大
                 node_color='r', edge_color='g',
                 arrowsize=23, font_size=16,
                 connectionstyle='arc3,rad=0.3')  # 调整自环弧度,让它向外展开
nx.draw_networkx_edge_labels(G, my_graph.position, edge_labels=weight, font_size=16)

plt.show()

其中connectionstyle的rad值越大,自环离节点越远,视觉上更醒目。

方法2:手动绘制自环(精准控制)

如果需要完全自定义自环大小,可提取自环边后用Matplotlib手动绘制:

import matplotlib.pyplot as plt
import networkx as nx

G = nx.DiGraph()
G.add_nodes_from(my_graph.vertex_list)
G.add_weighted_edges_from(my_graph.edges_list)
weight = nx.get_edge_attributes(G, 'weight')

# 绘制基础图(隐藏原自环,避免重复)
nx.draw_networkx(G, with_labels=True, pos=my_graph.position, 
                 node_size=200, node_color='r', edge_color='g',
                 arrowsize=23, font_size=16,
                 edgelist=[(u, v) for u, v in G.edges() if u != v])  # 只绘制非自环边
nx.draw_networkx_edge_labels(G, my_graph.position, edge_labels=weight, font_size=16)

# 提取并绘制自环
pos = my_graph.position
self_loops = [(u, v) for u, v in G.edges() if u == v]
for u, v in self_loops:
    x, y = pos[u]
    # 绘制自环圆弧,radius控制大小,lw控制线宽
    circle = plt.Circle((x, y), 0.15, color='g', fill=False, lw=2)
    plt.gca().add_patch(circle)
    # 添加自环箭头
    plt.annotate('', xy=(x + 0.15, y), xytext=(x + 0.15, y + 0.1),
                 arrowprops=dict(facecolor='g', shrink=0.05, width=2, headwidth=8))
    # 添加自环权重标签
    plt.text(x + 0.2, y + 0.1, str(weight[(u, v)]), fontsize=16)

plt.show()

这种方式可精准控制自环的半径、线宽、箭头样式,彻底解决自环过小问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:00:47