draw_networkx() 是否在传递节点列表时计算整个图形的布局?

Does draw_networkx() compute the layout for the entire graph when a nodelist is passed?

我正在尝试在总共有约 150 万个节点的图中可视化具有最高度数的 100 个节点。我在使用 draw_networkx() 时没有明确传递 pos 的任何值;我同意默认的 spring 布局定位。这需要很长时间,我想知道 draw_networks() 是否计算了整个图形的布局,然后绘制了 nodelist 中指定的节点?有没有办法优化这个?

我正在使用 pandas 数据框通过 from_pandas_edgelist()

生成图表

代码如下:

nodes = dict(G.degree)
top_100 = sorted(nodes, key=nodes.get, reverse=True)[:100]
nodes_100 = {k: nodes[k] for k in top_100}

plt.figure()
nx.draw_networkx(
    G, 
    node_list=nodes_100.keys(), 
    node_size=nodes_100.values(), 
    with_labels=False, 
    edge_color='grey', 
    linewidth=2
)
plt.show()

是的。

这是draw_networkx中的命令:

if pos is None:
    pos = nx.drawing.spring_layout(G)

因此,如果您不指定 pos 作为输入,它将调用 spring_layout 来查找所有节点的位置。