如何使用 Networkx 包以更好的分离度显示网络?
How to display a network with better separation using the Networkx package?
我使用 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()
但如您所见,文字大多集中在中心周围。我希望看到 类 个单词之间有更高的分离度。我该怎么做?
您正在寻找的是不同的 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。 (还支持多种图形布局算法)。
我使用 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()
但如您所见,文字大多集中在中心周围。我希望看到 类 个单词之间有更高的分离度。我该怎么做?
您正在寻找的是不同的 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。 (还支持多种图形布局算法)。