3

我使用包创建了一个图形对象,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()

在此处输入图像描述

但正如你所看到的,这些词大多集中在中心周围。我希望看到词类之间有更高的分离度。我怎么做?

4

1 回答 1

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()

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

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

于 2019-01-03T11:24:21.353 回答