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

Matplotlib绘制值与数据集不符问题求助

Matplotlib绘图值与数据集不匹配的问题排查与修复

问题描述

尝试绘制数据集中的随机行,数据集包含不同日期收集的数据,已将x轴设置为指定日期且无插值,但Matplotlib绘制的值与数据集中的条目值不匹配,趋势和数值偏差极大。相关代码如下:

# 创建整数类型的日期数组
flat_Dates_dates = flat_Dates[2:7]
flat_Dates_dates
# 输出:[20220620, 20220624, 20220627, 20220701, 20220708]

# 转换为pandas DatetimeIndex,避免日期插值
date_obj_pd = pd.to_datetime(flat_Dates_dates, format=("%Y%m%d"))
# 输出:DatetimeIndex(['2022-06-20', '2022-06-24', '2022-06-27', '2022-07-01', '2022-07-08'], dtype='datetime64[ns]', freq=None)

注:x轴为date_obj_pd,y轴为数据集对应的pandas DataFrame行。

可能的问题原因

  • x与y数据索引/长度不匹配:date_obj_pd长度为5,但如果y轴选取的DataFrame行/列长度不符,或索引未对齐,会导致数据错位映射
  • y轴数据选择错误:误选了整列而非目标行,或行索引指定错误,导致绘制了非预期的数据
  • 数据类型异常:y轴数据为字符串类型,Matplotlib自动转换时出现数值偏差
  • 日期轴隐式处理问题:Matplotlib对datetime轴的自动定位逻辑,可能导致数据点与日期的对应关系错乱

修复方法

  1. 严格对齐x与y的索引
    将date_obj_pd设置为目标数据的索引,确保一一对应:

    # 假设target_row是你要绘制的DataFrame行
    target_row.index = date_obj_pd
    target_row.plot(marker='o', rot=45)
    
  2. 明确指定x、y对应数据
    绘图时直接传入一一对应的数组,避免隐式索引匹配:

    import matplotlib.pyplot as plt
    
    # 选取DataFrame的目标行(比如第3行)
    y_values = df.iloc[2].values
    # 绘制时绑定x和y
    plt.plot(date_obj_pd, y_values, marker='o')
    plt.xticks(rotation=45)
    plt.show()
    
  3. 检查并修正数据类型
    确保y轴数据为数值类型:

    # 将DataFrame转换为数值类型,无法转换的设为NaN
    df = df.apply(pd.to_numeric, errors='coerce')
    
  4. 强制关闭日期插值
    手动设置x轴定位器,仅显示指定日期:

    plt.plot(date_obj_pd, y_values, marker='o')
    # 固定x轴刻度为指定日期
    plt.gca().xaxis.set_major_locator(plt.FixedLocator(date_obj_pd))
    plt.xticks(rotation=45)
    plt.show()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:55:21