Python读取多CSV文件绘图时其余曲线不显示、X轴混乱问题求解
问题原因及解决方法
核心问题根因
- X轴显示混乱:你调用
pd.read_csv时用parse_dates把Time Stamp列转换为了datetime时间类型,但你后续通过plt.xlim(left=500, right=1600)设置的是数值型范围,二者完全不匹配,导致X轴刻度逻辑混乱。 - 另外两组数据不显示:有两种可能:
- 另外两组的时间戳转换后的值不在你设置的
500~1600错误X轴范围内,被直接截断 - 另外两组的功率值不在你设置的
43.8~44.1Y轴范围内,或读取Power (dBm)列时因为列名不匹配出现空值,导致没有可绘制的有效数据
- 另外两组的时间戳转换后的值不在你设置的
具体解决步骤
- 修正时间轴格式
如果你需要X轴显示的是相对起始时间的秒数(和你设置的X轴单位标签Time (s)匹配),不要直接用datetime类型,将时间列转换为相对秒数:
# 对三个df的时间列做相同转换 time1 = (df1["Time Stamp"] - df1["Time Stamp"].iloc[0]).dt.total_seconds() time2 = (df2["Time Stamp"] - df2["Time Stamp"].iloc[0]).dt.total_seconds() time3 = (df3["Time Stamp"] - df3["Time Stamp"].iloc[0]).dt.total_seconds()
- 先确认数据范围再设置坐标轴边界
先注释掉plt.xlim和plt.ylim两行代码运行,查看三组数据的完整分布,确认所有数据的时间、功率范围后再设置合理的边界值,避免截断有效数据。 - 检查列名匹配性
你代码中读取功率列用的列名是' Power (dBm)'(前导有空格),确认三个CSV文件的对应列是否都有相同的前导空格,避免因列名不匹配读取到空值。可以临时加打印校验:
print(df2[' Power (dBm)'].isna().sum()) print(df3[' Power (dBm)'].isna().sum())
如果输出大于0说明列名不匹配或数据本身有空值,需要调整列名读取规则。
4. 优化X轴刻度显示
如果后续刻度出现重叠,可以添加一行plt.xticks(rotation=45)让刻度倾斜显示,避免拥挤。
内容的提问来源于stack exchange,提问作者Omer Davidi
相关产品推荐
相关产品推荐

