Skip to main content
 首页 » 编程设计

python之如何使用 Networkx 包以更好的分离度显示网络

2025年05月04日23sky-heaven

我使用 pytextrank 包创建了一个图形对象,如下所示:

import pytextrank 
### ...........................  
### Some steps and calculations 
### ........................... 
graph, ranks = pytextrank.text_rank(path_stage1) 

我可以使用 networkx 包来制作 networkx 绘图,如下所示:

import networkx as nx 
import matplotlib.pyplot as plt 
 
fig = plt.figure(figsize=(50,50)) 
nx.draw(graph, with_labels=True)  
 
plt.show() 

但如您所见,文字大多集中在中心周围。我希望看到词类之间有更高的分离度。我该怎么做?

请您参考如下方法:

你要找的是不一样的layout (Networkx 用于绘制图形时使用的节点定位算法的术语)。默认情况下,nx.draw() 使用 spring 布局。可以按如下方式更改布局:

import networkx as nx 
import matplotlib.pyplot as plt 
 
fig = plt.figure(figsize=(50,50)) 
pos = nx.spectral_layout(graph) 
nx.draw(graph, pos=pos, with_labels=True)  
 
plt.show() 

您可以尝试几种布局,以找到适合您需要的布局。

另一种选择是将图形保存到文件中,然后使用 gephi 加载它,它有一个很好的图形用户界面,用于可视化和探索你的图表。 (还支持多种图形布局算法)。