如何自动化批量创建列表并实现大规模模拟数据采集与绘图?
规模化优化模拟数据采集与绘图代码
针对你需要扩展到数百个位置的需求,我们可以通过字典存储+循环遍历的方式完全自动化重复步骤,避免手动编写数百行冗余代码。优化后的代码如下:
import numpy as np import matplotlib.pyplot as plt # -------------------------- # 配置所有需要处理的位置名称 # 这里可以直接扩展到数百个位置,比如['C1','C2',...,'C100'] # -------------------------- locations = ['C1', 'C2', 'C3'] # -------------------------- # 1. 自动化创建空列表(用字典统一管理) # -------------------------- concentration_data = {loc: [] for loc in locations} # -------------------------- # 2. 自动化定位所有位置 + 3. 自动化更新模拟数据 # -------------------------- with Simulation('Generic_File_Name.file') as sim: X = testing(sim, config) # 一次性获取所有位置的对象 link_objects = {loc: Links(sim)[loc] for loc in locations} for step in sim: X.updateXState() # 遍历所有位置,自动追加数据 for loc in locations: concentration_data[loc].append(link_objects[loc].concentration['Solid_W']) # -------------------------- # 4. 创建绘图x轴数据(无需修改,兼容任意数量的位置) # -------------------------- start = 0.0 # 取任意一个位置的数据长度即可,所有位置数据长度一致 stop = len(next(iter(concentration_data.values()))) interval = 1 t = np.arange(start, stop, interval) # -------------------------- # 5. 自动化绘图 # -------------------------- for loc, data in concentration_data.items(): plt.plot(t, data, label=loc) plt.legend() plt.show()
优化说明:
- 统一存储结构:用字典
concentration_data和link_objects替代零散变量,不管有多少个位置,都能统一管理,避免变量名爆炸。 - 循环替代重复代码:所有需要重复执行的步骤(创建列表、获取位置、追加数据、绘图)都通过循环完成,新增位置只需要在
locations列表里添加名称即可。 - 兼容性强:x轴数据的生成通过
next(iter(concentration_data.values()))获取任意一组数据的长度,确保不管有多少个位置都能正常工作。
内容的提问来源于stack exchange,提问作者xshovelfighter
相关产品推荐
相关产品推荐

