指定x轴与y轴绘图时y轴数值异常问题排查
指定x轴后Matplotlib图形异常的排查与修复
核心原因分析
单独调用ax.plot(temps)时,Matplotlib默认使用连续递增的索引值作为x轴,折线会按数据顺序平滑连接。而指定hours作为x轴后异常,大概率是以下两类问题:
hours序列并非有序排列,导致折线在x轴上来回跳转,视觉上显得混乱hours中存在异常值(如超大/超小数值),挤压了y轴的显示范围,让温度曲线看起来异常
具体排查与解决步骤
检查并修复
hours的排序问题
先确认hours是否按顺序排列:print(df['timestamps'].values)如果发现
hours是乱序的,先对DataFrame按timestamps排序后再绘图:df_sorted = df.sort_values(by='timestamps') fig, ax = plt.subplots() ax.plot(df_sorted['timestamps'], df_sorted['temps'])排查
hours的数值异常
查看hours的统计信息,确认是否存在超出合理范围的数值:print(df['timestamps'].describe())如果有异常值,先过滤清洗数据:
# 示例:保留0-24范围内的时间数据(根据实际业务调整范围) df_clean = df[(df['timestamps'] >= 0) & (df['timestamps'] <= 24)] fig, ax = plt.subplots() ax.plot(df_clean['timestamps'], df_clean['temps'])验证数据类型与完整性
确认两列数据均为有效数值类型,无缺失或非数值混入:# 转换为数值类型,无法转换的设为NaN df['timestamps'] = pd.to_numeric(df['timestamps'], errors='coerce') df['temps'] = pd.to_numeric(df['temps'], errors='coerce') # 删除包含缺失值的行 df = df.dropna(subset=['timestamps', 'temps']) fig, ax = plt.subplots() ax.plot(df['timestamps'], df['temps'])小样本测试定位问题
取前10行数据测试,判断是整体数据问题还是局部数据异常:sample_df = df.head(10) fig, ax = plt.subplots() ax.plot(sample_df['timestamps'], sample_df['temps'])如果小样本显示正常,再逐步扩大范围排查异常数据行。
内容的提问来源于stack exchange,提问作者breakthatbass
相关产品推荐
相关产品推荐

