gpt4 book ai didi

python - networkx 图中的节点间距问题

转载 作者:行者123 更新时间:2023-12-01 02:05:26 25 4
gpt4 key购买 nike

我正在尝试制作一个具有数百条边的networkx图:

def generate_network_graph(graph):
visual_graph = networkx.Graph()
for edge in graph.edges:
visual_graph.add_edge(edge.actor.name, edge.movie.title)
plt.figure(3, figsize=(30, 30))
networkx.spring_layout(visual_graph, k=0.9, iterations=20)
networkx.draw_spring(visual_graph)
plt.show()

但是,无论我看起来将 k 增加多少,我的图表看起来都像一团乱麻:

enter image description here

我不知道还能做什么来防止节点重叠;我尝试了从 0.0 到 5.0 的 k 值范围。我考虑过减小节点的大小,但我不确定这是否会使图形的可读性降低。不仅如此,重新生成该图需要花费非常多的时间,大约 15 分钟。我是否只是没有使用正确的图形库来完成这项工作?或者我可以修改一些东西以使我的图表更清晰。

最佳答案

来自文档

k : float (默认=无)
节点之间的最佳距离。如果没有,距离设置为
1/sqrt(n) 其中 n 是节点数。增加该值
将节点移得更远。

您可以尝试以下操作:

import networkx as nx
import matplotlib.pyplot as plt
import numpy as np

# Set an exemple graph
edge_list = [(1,2),(2,0),(2,4),(3,4)]
g = nx.Graph(edge_list)

# plot
pos = nx.spring_layout(g, k=0.3*1/np.sqrt(len(g.nodes())), iterations=20)
plt.figure(3, figsize=(30, 30))
nx.draw(g, pos=pos)
nx.draw_networkx_labels(g, pos=pos)
plt.show()

这里k1/np.sqrt(len(g.nodes()))成正比,因此即使节点数量较多,节点仍然可以很好地分离增加。

关于python - networkx 图中的节点间距问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49121491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com