绘制默认节点标签为node nam的networkx图形

2024-05-08 05:20:47 发布

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

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


Tags: andnetworkxaddnode绘图labels节点图表
1条回答
网友
1楼 · 发布于 2024-05-08 05:20:47

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

相关问题 更多 >