如何循环生成100个Erdos-Renyi图并按序号保存为GraphML文件
生成100个带编号的Erdos-Renyi随机图并保存
优化后的代码实现
将节点数和概率的输入移到循环外(避免重复输入),通过for循环迭代100次,每次生成图后用格式化字符串生成带编号的文件名:
import networkx as nx import matplotlib.pyplot as plt def generate_100_erdos_renyi(): # 仅输入一次节点数和概率 erdos_renyi_nodes = int(input("Please enter the number of nodes: ")) erdos_renyi_probability = float(input("Please enter the value of probability: ")) # 循环生成100个图 for i in range(1, 101): # 生成随机图 G_erdos_renyi = nx.erdos_renyi_graph(erdos_renyi_nodes, erdos_renyi_probability) # 可选:如果不需要每次都显示图,可注释掉以下3行绘图代码 nx.draw(G_erdos_renyi, with_labels=True) plt.axis('on') plt.show() plt.close() # 关闭画布,避免内存占用 # 生成带编号的文件名并保存 filename = f"my_erdos_renyi_{i}.graphml" nx.write_graphml(G_erdos_renyi, filename) print(f"Saved {filename}") generate_100_erdos_renyi()
关键细节
- 文件名自动编号:用Python的f-string语法
f"my_erdos_renyi_{i}.graphml",i从1到100,自动生成连续编号的文件名。 - 效率优化:节点数和概率仅输入一次,避免循环内重复交互。
- 内存管理:保留绘图代码时,每次绘图后调用
plt.close()关闭画布,防止内存累积。 - 灵活调整:若不需要预览每个图,直接注释绘图代码即可大幅提升生成速度。
内容的提问来源于stack exchange,提问作者Waqas Ahmad
相关产品推荐
相关产品推荐

