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

Posted

技术标签:

【中文标题】如何使用 Networkx 包显示具有更好分离度的网络?【英文标题】:How to display a network with better separation using the Networkx package? 【发布时间】:2019-05-29 21:16:32 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

您正在寻找的是不同的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 用于可视化和探索您的图表。 (还支持多种图形布局算法)。

【讨论】:

以上是关于如何使用 Networkx 包显示具有更好分离度的网络?的主要内容,如果未能解决你的问题,请参考以下文章