torch_geometric数据转NetworkX对象时如何保留节点空间位置信息
解决方案
1. 固定随机布局的方法
如果使用nx.spring_layout时需要每次生成的布局一致,只需要传入固定随机种子即可:
pos_layout = nx.spring_layout(g, seed=42)
设置固定seed参数后,每次运行的布局结果就不会随机变化。
2. 保留原始节点空间位置绘图的方法
你在构建PyG的Data对象时已经将原始坐标存入了pos属性,不需要调用NetworkX的布局算法,直接将pos转换为NetworkX要求的字典格式传入绘图参数即可:
g = to_networkx(data) # 按节点索引构建{节点ID: [x坐标, y坐标]}的位置字典 pos_dict = {node_idx: data.pos[node_idx].numpy() for node_idx in range(data.num_nodes)} plt.figure(1,figsize=(14,12)) nx.draw(g, cmap=plt.get_cmap('Set1'),linewidths=6, node_size= 10, pos = pos_dict) plt.show()
这样绘制的图就会完全复现你原始数据里的节点空间位置,和你R生成的原始图效果一致。
内容的提问来源于stack exchange,提问作者DigiPath
相关产品推荐
相关产品推荐

