在Python中绘制Networkx图

10

我最近开始在Python中使用networkx库来生成和可视化图形绘图。我从一个简单的代码(包括4个节点)开始,如下所示

import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_edges_from([(1 ,2) , (2 ,3) , (1 ,3) , (1 ,4) ])
nx.draw(G)
plt.show()

当我连续运行代码两次时,相同代码的输出如图所示(绘图方向是随机的)

image 1 image 2

是否可能生成具有相同/固定方向的绘图输出?

1个回答

10

默认情况下,使用弹簧布局来绘制图形。每次绘制时,它可以有一个新的方向。

还有其他可用的布局。

enter image description here

例如,使用nx.draw_circularnx.draw_spectral将始终给您相同的布局。

您还可以使用字典定义节点的位置,该字典将节点编号映射到位置。

import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_edges_from([(1 ,2) , (2 ,3) , (1 ,3) , (1 ,4) ])
pos = { 1: (20, 30), 2: (40, 30), 3: (30, 10),4: (0, 40)} 

nx.draw_networkx(G, pos=pos)

plt.show()

在此输入图片描述


1
谢谢!硬编码定位方法非常有帮助。 - sristisravan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接