如何使用Networkx包显示具有更好分离性的网络?

时间:2019-01-03 09:39:59

标签: python plot graph networkx graph-layout

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

enter image description here

但是,正如您所看到的,单词大多集中在中心。我希望看到词类之间的更高分隔。我该怎么办?

1 个答案:

答案 0 :(得分:5)

您要寻找的是一个不同的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加载它,该文件具有用于可视化和浏览图形的漂亮GUI。 (还支持几种图形布局算法)。