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

Python遍历多文本文件循环绘制第7列与第5列关系图

批量绘制多文本文件指定列关系图实现方案

用Python就能实现单代码循环批量处理,不需要手动逐个文件操作,核心逻辑是遍历目标目录的文本文件、自动读取表头和对应列数据、逐一生成图表保存,具体实现如下:

依赖安装

先安装需要的第三方库,在命令行执行以下命令即可:
pip install pandas matplotlib

可直接运行的代码

import os
import pandas as pd
import matplotlib.pyplot as plt

# -------------------------- 这里修改为你自己的配置 --------------------------
TARGET_DIR = r"替换为存放文本文件的文件夹绝对路径"  # Windows路径示例:r"C:\data\txt_files",Mac/Linux路径示例:"/home/xxx/data"
SAVE_DIR = r"替换为生成图片的保存文件夹路径"    # 文件夹不存在时会自动创建
X_AXIS_COL = 5  # 第5列作为X轴,按日常从1开始计数的列号填写即可
Y_AXIS_COL = 7  # 第7列作为Y轴
# ----------------------------------------------------------------------

os.makedirs(SAVE_DIR, exist_ok=True)

# 遍历目标目录下所有txt格式文件
for filename in os.listdir(TARGET_DIR):
    if not filename.lower().endswith(".txt"):
        continue  # 跳过非txt格式的文件
    file_full_path = os.path.join(TARGET_DIR, filename)
    
    try:
        # 读取文本,第一行自动识别为表头,自动适配空格、制表符、逗号等常见分隔符
        df = pd.read_csv(
            file_full_path,
            header=0,
            sep=None,
            engine="python",
            # 如果读文件报编码错误,解开下一行注释,根据文件实际编码替换为gbk/utf-8
            # encoding="gbk"
        )

        # 跳过列数不足的异常文件
        if df.shape[1] < max(X_AXIS_COL, Y_AXIS_COL):
            print(f"[跳过] 文件{filename}总列数不足,无法读取目标列")
            continue

        # 提取目标列数据和对应表头(自动把从1开始的列号转换为pandas使用的0起始索引)
        x_series = df.iloc[:, X_AXIS_COL - 1]
        y_series = df.iloc[:, Y_AXIS_COL - 1]
        x_label = df.columns[X_AXIS_COL - 1]
        y_label = df.columns[Y_AXIS_COL - 1]

        # 绘制图表
        plt.figure(figsize=(8, 5), dpi=120)
        # 默认绘制散点图,需要折线图就把scatter替换为plot
        plt.scatter(x_series, y_series, s=12, color="#2c7fb8", alpha=0.8)
        plt.xlabel(x_label, fontsize=10)
        plt.ylabel(y_label, fontsize=10)
        plt.title(f"{filename}\n{y_label} 随 {x_label} 变化关系", fontsize=11)
        plt.grid(linestyle="--", alpha=0.3)

        # 保存图片,文件名和原txt文件一一对应,默认格式为png
        save_path = os.path.join(SAVE_DIR, filename.replace(".txt", ".png"))
        plt.savefig(save_path, bbox_inches="tight")
        plt.close()  # 必须关闭当前画布,避免后续图表叠加、内存占用过高
        print(f"[完成] 已生成{filename}对应图表")

    except Exception as e:
        print(f"[错误] 处理{filename}时出错:{str(e)}")

常见调整说明

  • 分隔符适配:如果你的文本使用固定特殊分隔符(比如分号;),把代码里sep=None改成sep=";"即可,自动识别模式可以覆盖90%以上常规导出的文本数据
  • 图表类型切换:默认生成散点图,需要折线趋势图就把plt.scatter(...)替换成plt.plot(...),可以额外加marker="o"参数给折线添加数据点标记
  • 空值过滤:如果数据里存在缺失值、空行,可以在提取列数据前加一行df = df.dropna(subset=[df.columns[X_AXIS_COL-1], df.columns[Y_AXIS_COL-1]]),自动丢弃目标列为空的无效行
  • 图片格式:如果需要存成jpg/svg等格式,直接修改保存路径的文件后缀即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:06:29