繁体   English   中英

NetworkX 不显示边缘 label 到同一节点的边缘

[英]NetworkX does not show edge label for edge to the same node

我发现 NetworkX 图形绘制库有一个奇怪的行为:如果边向后指向同一个节点,它不会绘制边 label。

我很确定它是 NetworkX 的一项功能,因为我使用相同的方法创建了所有边缘标签,并且它适用于非循环边缘,正如您在图像中看到的那样。

是否有任何显示选项可以帮助显示所有边缘标签?

import networkx as nx
import matplotlib.pyplot as plt

g = nx.DiGraph()

edge_labels = dict()

g.add_edge(0, 1 )
#ATTENTION - this will work
edge_labels[(0, 1)] = '01'

g.add_edge(0, 0)

#ATTENTION - this line will not work
edge_labels[(0, 0)] = '00'

pos = nx.spring_layout(g)
nx.draw(g, pos, with_labels=True, font_weight='bold')
nx.draw_networkx_edge_labels(g, pos, edge_labels=edge_labels, 
font_color='red')
plt.show()

例子:

图片示例

给定两个节点(x1, y1)(x2, y2)的坐标,label position 计算为

(x, y) = (
            x1 * label_pos + x2 * (1.0 - label_pos),
            y1 * label_pos + y2 * (1.0 - label_pos),
        )

其中label_pos的默认值为0.5 [source]
这意味着自边缘的边缘 label 与节点 position 重叠,这就是您看不到它的原因,除非增加字体大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM