绘制带有节点标签的networkx图,默认为节点名称

Pra*_*tal 37 python networkx

NetworkX很强大,但我试图绘制一个默认显示节点标签的图表,我很惊讶这个看起来很简单的任务对于Networkx的新手来说是多么乏味.有一个示例显示如何向绘图添加标签.

https://networkx.github.io/documentation/latest/examples/drawing/labels_and_colors.html

这个例子的问题是,当我想要做的只是在绘制图形时显示与节点名称相同的标签时,它使用了太多的步骤和方法.

# Add nodes and edges
G.add_node("Node1")
G.add_node("Node2")
G.add_edge("Node1", "Node2")
nx.draw(G)    # Doesn't draw labels. How to make it show labels Node1, Node2 along?
Run Code Online (Sandbox Code Playgroud)

有没有办法nx.draw(G)在图中内联显示默认标签(本例中为Node1,Node2)?

Joe*_*oel 70

TL/DR:只需添加with_labels=Truenx.draw通话.

因此,该页面上额外复杂性的主要原因是它展示了如何设置许多不同的东西作为标签以及为不同的节点提供不同的颜色,并提供对节点位置的仔细控制.看起来您只想要在创建节点时给出的名称,并且您对默认颜色和默认位置感到满意

import networkx as nx
import pylab as plt

G=nx.Graph()
# Add nodes and edges
G.add_edge("Node1", "Node2")
nx.draw(G, with_labels = True)
plt.savefig('labels.png')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果你想做一些事情,以便节点标签不同,你可以发送一个dict作为参数.所以,例如,

labeldict = {}
labeldict["Node1"] = "shopkeeper"
labeldict["Node2"] = "angry man with parrot"

nx.draw(G, labels=labeldict, with_labels = True)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 完美,有效!`with_labels` 参数在 nx.draw 的帮助中没有提及,即 >>> `help(nx.draw)` 但它有效。谢谢! (3认同)
  • 所以它在文档中,但不是直接的:`**kwds:可选关键字有关可选关键字的说明,请参见 networkx.draw_networkx()。` (2认同)
  • 但这些节点是如此之小……如何将它们显示得更大或更好? (2认同)