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

Python中netgraph模块MultiGraph函数设置随机种子无效,如何解决?

如何为netgraph的MultiGraph固定布局随机种子

可以通过两种方式固定netgraph绘图时的布局,避免每次运行结果不同:

方法1:给布局函数传递seed参数(推荐)

netgraph的MultiGraph默认使用弹簧布局(spring layout),该布局算法支持seed参数来固定随机初始化位置。你可以通过layout_kwargs参数将seed传递给布局函数:

修改后的代码如下:

import networkx as nx
import matplotlib.pyplot as plt
from netgraph import MultiGraph
import pandas as pd

G = nx.MultiDiGraph()
G.add_node('Surabaya')
G.add_node('Yogyakarta')
G.add_node('Bali')
G.add_node('Semarang')
G.add_node('Medan')
G.add_node('Makassar')
G.add_node('Padang')
G.add_node('Palembang')
G.add_node('Jakarta')
G.add_node('Bandung')

df = pd.read_csv("data.csv")
for x,y,z in zip(df['Asal'],df['Tujuan'],df['Ongkos']):
    G.add_edge(str(x), str(y), weight=z)

plt.figure(figsize=(12,12))
MultiGraph(
    G,
    node_labels=True,
    node_color="skyblue",
    node_size=4.25,
    node_label_fontdict=dict(fontsize=8),
    edge_color="gray",
    edge_labels=nx.get_edge_attributes(G, 'weight'),
    edge_label_fontdict=dict(fontsize=9),
    arrows=True,
    # 添加布局参数,固定随机种子
    layout_kwargs={'seed': 42}  # 数值可任意指定,比如42、100等
)
plt.show()

方法2:全局设置numpy随机种子

如果布局算法依赖numpy的随机数生成,也可以在代码开头设置全局numpy随机种子,固定所有依赖numpy随机操作的结果:

import numpy as np
np.random.seed(42)  # 放在导入模块之后、绘图之前执行

# 后续代码保持不变

注意:方法2会影响整个脚本中所有numpy相关的随机操作,因此更推荐方法1,仅针对布局固定种子。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:43:25