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

修改networkx图的边时如何保持原有节点位置不变

实现方法

核心逻辑很简单:节点坐标只和计算pos时传入的图结构有关,你只要调整代码执行顺序,先基于原始平衡树计算好固定的节点坐标,再修改图的边结构即可,修改边的操作不会改动已经生成的坐标值。

修改后的完整可运行代码如下:

import matplotlib.pyplot as plt
import networkx as nx
import pydot
from networkx.drawing.nx_pydot import graphviz_layout

# 先创建原始平衡树,计算固定节点位置
T = nx.balanced_tree(2, 5)
pos = graphviz_layout(T, prog="dot")

# 再修改图的边结构
T.remove_edge(3,8)
T.add_edge(3,4)
T.add_edge(7,8)

for line in nx.generate_adjlist(T):
    print(line)

# 绘图时复用之前算好的原始节点坐标
nx.draw(T, pos, node_color="y", edge_color='#909090', node_size=200, with_labels=True)

plt.show()

运行后所有节点的位置和原始5层二叉平衡树的可视化结果完全一致,仅展示的连线会按照修改后的边结构渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:15:03