Python读取分块.dat文件绘制10组7折线图表的方法咨询
Python读取.dat文件并批量绘制折线图实现方案
依赖安装
先安装需要的第三方库,在终端执行命令:pip install numpy matplotlib
核心实现思路
- 读取文件时先过滤所有空行,解决数据块之间空行分隔的问题,过滤后总计70行有效数据,每连续7行对应1个数据块、匹配1张待生成的图表
- 直接生成1到100区间均匀分布的100个数值作为统一的X轴坐标
- 逐块解析数据:每行按分隔符拆分后,第1个元素作为折线的图例标签,第2到101个元素转换为浮点型作为该折线的Y轴序列
- 每个数据块单独创建独立画布,绘制7条折线后添加图例、坐标轴标注,按需保存或展示图表
完整可运行代码
import numpy as np import matplotlib.pyplot as plt # -------------------------- 配置项 可根据实际情况修改 -------------------------- DATA_FILE_PATH = "your_data.dat" # 替换为你的.dat文件实际路径 SAVE_FIG = True # True为保存图片到本地,False为弹窗直接显示 # ----------------------------------------------------------------------------- # 读取文件并过滤空行 with open(DATA_FILE_PATH, "r", encoding="utf-8") as f: valid_lines = [line.strip() for line in f.readlines() if line.strip()] # 校验数据行数是否符合规则 if len(valid_lines) != 70: raise ValueError(f"数据格式异常,预期有效数据70行,实际读取到{len(valid_lines)}行,请检查文件") # 生成X轴数据:1-100均匀分布的100个点 x = np.linspace(1, 100, 100) # 逐块处理数据并绘图 for block_id in range(10): # 提取当前块对应的7行数据 current_block = valid_lines[block_id*7 : (block_id+1)*7] # 创建独立画布 plt.figure(figsize=(10, 6), dpi=120) # 逐行绘制折线 for raw_line in current_block: items = raw_line.split() # 如果是逗号分隔就改成 split(',') label = items[0] y_data = [float(val) for val in items[1:101]] plt.plot(x, y_data, label=label) # 添加图表标注 plt.xlabel("X value") plt.ylabel("Y value") plt.title(f"Line Chart - Group {block_id+1}") plt.legend() plt.grid(alpha=0.3) # 输出图表 if SAVE_FIG: plt.savefig(f"chart_group_{block_id+1}.png", bbox_inches="tight") else: plt.show() # 关闭画布释放内存 plt.close()
使用注意事项
- 运行前将代码里
DATA_FILE_PATH的值替换为你自己的.dat文件的绝对/相对路径 - 默认按空白符(空格、制表符)分割列,如果你的文件用其他符号分隔(比如逗号),修改
raw_line.split()的入参即可 - 代码默认将10张图表以png格式保存在脚本运行的同级目录,如果需要弹窗预览图表,把
SAVE_FIG改为False即可 - 如果文件中存在缺失值、非数值内容,需要在转float的步骤前增加异常值过滤逻辑,避免运行报错
内容的提问来源于stack exchange,提问作者engineeringstudent
相关产品推荐
相关产品推荐

