NetworkX可视化时如何固定节点位置以追踪节点颜色变化
固定NetworkX绘图的节点位置
每次调用nx.draw()时,默认会重新随机计算节点的布局位置,导致前后绘图节点位置不一致。要固定位置,只需要提前生成一次布局坐标,后续绘图时传入这个坐标即可。
修改后的代码
import networkx as nx import matplotlib.pyplot as plt import numpy as np n = 50 p = 0.12 np.random.seed(42) G = nx.gnp_random_graph(n, p) color_map = np.random.choice(['blue', 'red'], size=50) # 提前生成并固定节点布局位置 pos = nx.spring_layout(G) # 可替换为nx.circular_layout、nx.kamada_kawai_layout等其他布局算法 # 第一次绘图,使用固定的pos nx.draw(G, pos=pos, node_color=color_map, with_labels=True) plt.savefig('2.png') plt.clf() # 清空画布,避免两次绘图内容叠加 # 第二次绘图,复用同一个pos nx.draw(G, pos=pos, node_color=color_map, with_labels=True) plt.savefig('3.png')
关键说明
- 布局算法可按需选择:
spring_layout是常用的力导向布局,你可以根据图的类型换成环形、Kamada-Kawai等其他布局,只要生成一次后固定传入pos参数即可。 plt.clf()用于清空当前画布,保证两次保存的图片是独立的,不会出现内容叠加的情况。- 后续修改节点颜色后绘图,只要继续传入同一个
pos,节点位置就会完全重合,便于追踪颜色变化或制作GIF。
内容的提问来源于stack exchange,提问作者rmunuu
相关产品推荐
相关产品推荐

