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

Python使用for循环批量处理多文件数据并实现matplotlib绘图

批量读取dat文件并绘图的实现方案

优先推荐调整读取逻辑,将数据存入列表后遍历绘图,代码可维护性更高:

方案1:优化读取+循环绘图(推荐)

先调整读取代码,避免动态生成变量:

import numpy as np
import matplotlib.pyplot as plt

# 用列表存储所有读取到的数据
data_list = []
for i in range(10, 15):
    current_data = np.genfromtxt(f'Filename000{i}.dat', delimiter='', skip_header=1)
    data_list.append(current_data)

再写循环绘图代码,可自定义不同数据的颜色和标签:

# 自定义折线样式,可根据需求修改
line_styles = ['-b', '-r', '-g', '-c', '-m']

for idx, data in enumerate(data_list):
    x = data[:, 0]
    y = data[:, 1]
    plt.plot(x, y, line_styles[idx], label=f'data{idx+1}')

# 统一设置坐标轴和图例
plt.xlabel('x', fontsize=15)
plt.ylabel('y', fontsize=15)
plt.legend()
plt.show()

方案2:基于已生成的data1~data5变量实现

如果不想修改之前的读取逻辑,也可以直接通过变量名遍历:

import numpy as np
import matplotlib.pyplot as plt

# 这里沿用你之前的读取代码
for i in range(10,15,1):
    locals()["data" + str(i-9)] = np.genfromtxt(f'Filename000{i}.dat', delimiter='', skip_header = 1)

# 循环绘图部分
line_styles = ['-b', '-r', '-g', '-c', '-m']
for i in range(1, 6):
    data = locals()[f'data{i}']
    x = data[:, 0]
    y = data[:, 1]
    plt.plot(x, y, line_styles[i-1], label=f'data{i}')

plt.xlabel('x', fontsize=15)
plt.ylabel('y', fontsize=15)
plt.legend()
plt.show()

小提示:动态生成局部变量的方式容易出现变量名冲突、debug难度高的问题,非必要场景优先选择用列表/字典存储批量数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 16:36:02