如何在python networkx中显示图形节点的标签

2024-05-12 13:07:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码来可视化networkx图形:

node_positions = networkx.spring_layout(graph)
networkx.draw_networkx_nodes(graph, node_positions)
networkx.draw_networkx_edges(graph, node_positions, style='dashed')

我想在每个节点上显示节点标签。graph.nodes()将给出所有节点的列表,但如何使用它们来标记图上的节点?在

我试过了,但没用:

^{pr2}$

编辑:

我尝试了以下方法,目前还有效:

for node,_ in graph.nodes(data="False"):
        labels[node] = node;
networkx.draw_networkx_labels(graph,node_positions,labels,font_size=16)

如果还有什么优雅的方法,请告诉我。我觉得创建新的dict是过度的,多余的,不应该被要求。在


Tags: 方法代码networkxnode图形labels节点可视化
2条回答

enter image description here检查nx.draw source code或{a3}。我不太确定我是否正确地回答了您的问题,因为根据我的理解,这是一个相当直接的问题,您可以简单地为图添加标签,如下所示:

networkx.draw(graph, node_positions, with_labels = True)

也可以直接使用draw_spring,而不必明确指定节点位置:

^{pr2}$

此图显示运行以下代码的结果:

import networkx as nx
G = nx.erdos_renyi_graph(10,0.4)
nx.draw(G, with_labels=True)
plt.show()

您的问题是,您发送了一个图表节点列表,而不是一个可选参数,因为它需要dict。通过使用这个可选参数,networkx允许您显示任何您想要的标签。在您的例子中,只需要节点名称的明显标签。这是默认行为。很简单

networkx.draw_networkx_labels(graph,node_positions,font_size=16)

就够了。不要发送dict,它将使用节点名来标记它们。在

另一种选择是完全按照abdallah的建议来做,并使用with_labels=True选项在一个networkx.draw命令中绘制整个图形。在


对您问题的格式进行简要评论

当我最初阅读您的问题时,我假设draw_networkx_labels命令给出的输出与您预期的不同。在

现在我已经试过你的代码了,我发现它实际上给出了一个错误。告诉我们错误是

AttributeError: 'list' object has no attribute 'items'

如果你得到一条错误信息,它包含了关于问题所在的信息,那么为了将来的参考。如果你发布问题,也要发布错误消息。在

相关问题 更多 >