用 Python 绘制 Networkx 图

sri*_*van 7 python data-visualization graph matplotlib networkx

我最近开始在 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()
Run Code Online (Sandbox Code Playgroud)

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

图 1 图 2

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

Imp*_*est 6

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

还有其他可用的布局。

在此处输入图片说明

使用 eg nx.draw_circularornx.draw_spectral会给你总是相同的布局。

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

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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明