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

Kri*_*673 1 python plot graph graph-layout networkx

我使用这样的pytextrank包创建了一个图形对象:

import pytextrank
### ........................... 
### Some steps and calculations
### ...........................
graph, ranks = pytextrank.text_rank(path_stage1)
Run Code Online (Sandbox Code Playgroud)

我可以使用这个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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但正如你所看到的,这些词主要集中在中心周围.我希望看到各类词之间的分离更高.我怎么做?

zoh*_*kom 5

您正在寻找的是一种不同的布局(Networkx用于绘制图形时使用的节点定位算法的术语).默认情况下,nx.draw()使用弹簧布局.更改布局可以按如下方式完成:

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

您可以使用一些布局来找到适合您需求的布局.

另一个选择是将图形保存到文件中,并使用gephi加载它,它具有一个很好的GUI,用于可视化和探索图形.(还支持多种图形布局算法).