【问题标题】:How can I display label for graph nodes in python networkx如何在 python networkx 中显示图形节点的标签
【发布时间】:2015-09-30 17:43:45
【问题描述】:

我有以下代码来可视化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() 会给我所有节点的列表,但我如何使用它们来标记图表上的节点?

我试过了,但它不起作用:

networkx.draw_networkx_labels(graph,node_positions,graph.nodes(data="false"),font_size=16)

编辑:

我尝试了以下操作,现在可以使用:

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

如果仍有一些优雅的方法可以做到这一点,请告诉我。我觉得创建新的 dict 是多余的,多余的,不应该是必需的。

【问题讨论】:

标签: python networkx


【解决方案1】:

检查nx.draw source codedrawing documentation。我不太确定我是否正确地回答了您的问题,因为根据我的理解,这是一个相当直接的问题,只需您可以为图表添加标签,如下所示:

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

您也可以直接使用draw_spring,而无需明确指定节点位置:

networkx.draw_spring(graph, with_labels = True)

下图为运行以下代码的结果:

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

【讨论】:

  • 对不起,我不够清楚。我试过了,但这对我不起作用。如果您引用此链接:(networkx.github.io/documentation/latest/examples/drawing/…)我想要一些可以在绘制的图形上显示 0、1、2、3 的东西,而不是专门为每个节点分配一些标签,在这种情况下是 alpha、beta 等。
  • G = nx.erdos_renyi_graph(10,0.1); nx.draw(G, with_labels=True); plt.show();在 ipython 笔记本上试试这个,你会发现它会自动为节点添加数字标签
  • 再次检查出现的图的答案。
【解决方案2】:

您的问题是您发送了图形节点列表来代替它期望字典的可选参数。通过使用这个可选参数,networkx 允许您拥有想要出现的任何标签。在您的情况下,您只需要节点名称的明显标签。这是默认行为。就这么简单

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

就足够了。不要发送字典,它将使用节点名称来标记它们。

另一种选择是完全按照 abdallah 的建议进行操作,并在一个带有 with_labels=True 选项的 networkx.draw 命令中绘制整个图形。


对问题格式的简短评论

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

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

AttributeError: 'list' 对象没有属性 'items'

会更容易找出问题所在,因此如果您收到错误消息以供将来参考,它包含有关问题所在的信息。如果您发布问题,请同时发布错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多