使用 networkx 修正图形中边缘标签的位置

Correct position of edge labels in a graph plot using networkx

我有一段代码可以画图。为此,我正在阅读一些文件以获取节点和权重。

plt.title('Grafo Completo Github')
pos = nx.spring_layout(g)
nx.draw(g, with_labels=True, node_color="skyblue", font_size=8)
nx.draw_networkx_edge_labels(g, pos=pos, edge_labels=nx.get_edge_attributes(g, 'weight'), label_pos=1,  rotate=False, font_size=8)
plt.savefig("grafo_github.jpg")
plt.show()

但是,这会产生下图。如何更正边缘标签的位置? 错误位置的边缘标签:

真正的错误似乎是 label_pos 属性的值。
来自 the docs of draw_networkx_edge_labels:

label_pos (float) – Position of edge label along edge (0=head, 0.5=center, 1=tail)

通过使用 label_pos=1,标签出现在节点后面,因为它们的位置也在 'the edge tail' 上。 将此值更改为 0.5 应该可以解决问题:

nx.draw_networkx_edge_labels(T, pos, edge_labels=nx.get_edge_attributes(T, 'weight'), label_pos=0.5, rotate=False, font_size=8)

或者,由于 0.5 是默认值,只需将其删除即可。

pos = nx.spring_layout(g)
nx.draw(g, pos=pos, with_labels=True, node_color="skyblue", font_size=8)
nx.draw_networkx_edge_labels(T, pos, edge_labels=nx.get_edge_attributes(T, 'weight'), rotate=False, font_size=8)