You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取NetworkX绘制网络时节点的x、y坐标numpy数组?

获取NetworkX图节点位置的Numpy数组

完全可以实现!其实nx.draw_networkx内部会调用布局算法(默认是弹簧布局spring_layout)来计算节点位置,你只需要直接调用对应的布局函数拿到位置字典,再按节点顺序提取转成Numpy数组就行,步骤很简单:

具体实现代码

import networkx as nx
import numpy as np

# 生成你需要的图
a = nx.barabasi_albert_graph(10, 2)

# 获取节点位置字典:key是节点编号,value是(x,y)坐标
# 这里用spring_layout和draw_networkx默认布局一致,也可以换成其他布局比如circular_layout
pos = nx.spring_layout(a)

# 按节点编号从小到大提取位置,转成Numpy数组
# 因为Barabasi-Albert生成的节点是0~9的整数,sorted后就是顺序排列的节点
node_pos_array = np.array([pos[node] for node in sorted(a.nodes())])

# 输出结果,每个元素对应节点0、1...9的位置(如果要对应1~10,只需要把节点编号理解为1-based即可)
print(node_pos_array)

补充说明

  • 如果你需要其他布局(比如环形布局、随机布局),只需要把nx.spring_layout换成对应的函数,比如nx.circular_layout(a)、nx.random_layout(a)就行,这些布局函数都会返回同样格式的位置字典。
  • 如果你图中的节点是1-based编号(比如节点从1开始),只需要把sorted(a.nodes())换成range(1, len(a.nodes())+1)(确保按1到n的顺序提取)。
  • 这个数组的顺序完全对应节点编号的升序,第一个元素是编号最小的节点位置,以此类推,完美匹配你需要的[(-0.24,-0.22),(-0.15,0.1),...]格式。

内容的提问来源于stack exchange,提问作者NicolaiF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:33:50