如何在 networkx 中绘制不重叠的边缘标签?

Spa*_*ine 6 python matplotlib networkx springlayout

如何在 networkx 中绘制不重叠的边缘标签?使用该选项scale看起来更好,但边缘标签仍然重叠,例如,

在此处输入图片说明

相关源码如下:

# build a graph
G.add_edge(u, v, r=value)

# plot the graph
pos = nx.spring_layout(G, scale=3)

nx.draw(G, pos)

edge_labels = nx.get_edge_attributes(G,'r')
nx.draw_networkx_edge_labels(G, pos, edge_labels = edge_labels)

plt.savefig(filename)
Run Code Online (Sandbox Code Playgroud)

Joe*_*oel 10

这是spring_layout 的文档。其中一个参数是k

\n\n
\n

k(float (默认=无)) \xe2\x80\x93 节点之间的最佳距离。如果没有,则距离设置为 1/sqrt(n),其中 n 是节点数。增加此值可将节点移得更远。

\n
\n\n

所以打电话spring_layoutk=5/math.sqrt(G.order())或其他可以增加距离的值进行呼叫。

\n

  • 谢谢。它不可扩展(对于大图来说看起来更糟)。使用其他图形可视化工具(例如 Graphviz)可能是一个很好的解决方案。 (6认同)