在 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_circular
或 nx.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()
我最近开始使用 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_circular
或 nx.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()