在 Python 中绘制 Networkx 图

Plotting Networkx graph in Python

我最近开始使用 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()

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

是否可以生成 same/fixed 方向的绘图输出?

默认使用 spring 布局来绘制图形。每次绘制时都可以有一个新的方向。

还有其他可用的布局。

使用例如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()