多CSV文件合并绘图时plt.plot参数报错问题求助
问题解决思路
核心错误原因
plt.plot() 本身不支持直接用 x="c"、y="d" 这种列名字符串传参——它需要的是具体的数值数组,你把pandas绘图的语法和matplotlib原生语法搞混了。
额外的小问题
代码里用到了glob.glob()但没导入glob模块,运行时会先报NameError,得先补上导入。
修正后的代码
from matplotlib import pyplot as plt import os import pandas as pd import glob # 补上缺失的导入 path = r"C:\Users\my_data" csv_files = glob.glob(os.path.join(path, "*.csv")) for idx, file in enumerate(csv_files): df = pd.read_csv(file, header=2, skiprows=1, usecols=["a", "b", "c", "d", "e"]) # 从DataFrame提取对应列的数据传入plt.plot plt.plot(df["c"], df["d"], label=f"文件{idx+1}") # 加label方便区分不同文件的曲线 plt.xlabel("c") plt.ylabel("d") plt.legend() # 显示图例区分各曲线 plt.show()
关键说明
- 调用
plt.plot()时,要传入df["c"]和df["d"]这种具体的Series数据,而不是列名字符串 - 加上
label参数和plt.legend(),能直观区分每个CSV文件对应的曲线 - 必须补上
import glob,避免未定义变量的错误
内容的提问来源于stack exchange,提问作者Pontius
相关产品推荐
相关产品推荐

