如何用Python读取多个CSV文件并在同一张图绘制多条曲线
批量读取CSV并绘制对比曲线
以下是实现自动化批量绘图的改进代码,同时优化了路径处理和曲线区分逻辑:
import csv import matplotlib.pyplot as plt from glob import glob import os # 基础路径设置 base_path = '/ref_path/ref_computation/' # 获取所有data开头的CSV文件 csv_files = glob(os.path.join(base_path, 'data*.csv')) # 遍历每个CSV文件 for file_path in csv_files: x = [] y = [] # 提取文件名作为图例标签 file_name = os.path.basename(file_path) with open(file_path, 'r') as csvfile: plots = csv.reader(csvfile, delimiter=',') # 如果CSV首行是表头,取消下面一行的注释以跳过 # next(plots) for row in plots: x.append(float(row[1])) y.append(float(row[3])) # 绘制曲线并添加标签 plt.plot(x, y, label=file_name) # 添加图表元素 plt.xlabel('第2列数据') plt.ylabel('第4列数据') plt.title('多组数值计算结果对比') plt.legend() # 显示图例区分不同文件的曲线 plt.show()
关键改动说明
- 批量获取文件:用
glob配合os.path.join自动匹配目录下所有data*.csv格式的文件,无需手动逐个指定文件名,实现自动化遍历。 - 曲线区分:提取每个文件的名称作为曲线标签,通过图例直观区分不同计算结果。
- 路径兼容性:用
os.path.join拼接路径,避免手动拼接时出现的跨平台路径分隔符问题。 - 表头处理:如果你的CSV文件首行是列名而非数据,取消
next(plots)的注释即可跳过表头行。
内容的提问来源于stack exchange,提问作者Martin7
相关产品推荐
相关产品推荐

