【发布时间】:2021-12-30 23:07:18
【问题描述】:
我发现 NetworkX 图形绘制库有一个奇怪的行为:如果边向后指向同一个节点,它不会绘制边标签。
我很确定它是 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()
已解决 通过将 '_____' 放在循环边缘的字符串之前,您可以看到它。 不漂亮,但显示
if state_id == self.last_parent.id:#if it is loop
self.edge_labels[(self.last_parent.id, state_id)] = '_____'+ char_of_edge# add to the edge label the symbols
例子:
【问题讨论】:
-
你能用代码创建一个小样本吗?
-
检查一下。 edge_labels[(0, 0)] = '00' 不工作
-
嘿,您找到了解决方法真是太棒了——您能否将其发布为答案而不是将其编辑到您的问题中?