如何使用 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 包显示具有更好分离度的网络?的主要内容,如果未能解决你的问题,请参考以下文章

加权边缘如何影响networkx中的PageRank?

如何使用networkx在图中显示节点名称? [复制]

如何通过networkx制作可点击的图表?

[Python] networkx入门 转

Networkx:如何在图形中显示节点和边属性

有没有办法保证 NetworkX 的分层输出?