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

问题描述 投票:32回答:1

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?

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

networkx
1个回答
64
投票

tl / dr:只需将with_labels=True添加到nx.draw调用中。

您正在查看的page有点复杂,因为它显示了如何设置许多不同的东西作为标签,如何为不同的节点提供不同的颜色,以及如何提供仔细控制节点位置。所以有很多事情要发生。

但是,您似乎只希望每个节点都使用自己的名称,并且您对默认颜色和默认位置感到满意。所以

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')

enter image description here

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

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

nx.draw(G, labels=labeldict, with_labels = True)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.