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

Python Pandas绘图异常求助:双列同图Y轴范围不符问题

解决Pandas绘图Y轴范围异常问题

先修正你的可复现代码

原代码有两处逻辑错误,导致数据结构不符合预期:

  • 创建DataFrame时覆盖了之前定义的Date列,需把日期列包含在DataFrame初始化中
  • set_index默认返回新对象,需赋值给原变量或加inplace=True才会生效

修正后的完整代码:

import pandas as pd
import matplotlib.pyplot as plt

a = [22.49228808, 23.67596776, 25.23977312, 26.84448022, 28.81581532,
       30.33304259, 30.33647936, 31.0066119 , 31.32509943, 29.50372721,
       27.10255157, 25.2329266 , 19.34649399, 17.18931596, 14.64576531,
       13.45902426, 14.84226619, 17.34210585, 21.55897865, 22.84701125]
b= [23.13694191, 23.27906036, 23.4411087 , 23.66352272, 23.92148399,
       24.2199173 , 24.50629044, 24.60942459, 24.62063408, 24.66880989,
       24.52558517, 24.11040497, 23.7087822 , 23.08251572, 22.49897194,
       22.16906548, 22.03343964, 22.09576797, 22.44637871, 23.01521301]

# 正确构建带日期索引的DataFrame
d = pd.DataFrame({
    'Date': pd.date_range(start='2022-01-01 01:00:00', periods=len(a), freq='H'),
    'a': a,
    'b': b
}).set_index('Date')

解决Y轴范围失效问题

你用plt.ylim([0,50])没效果,核心原因是你已经创建了ax轴对象,但plt.ylim可能没有作用在这个指定的轴上。直接针对ax对象设置Y轴范围即可:

fig, ax = plt.subplots(figsize=(12, 3))
d['a'].plot(ax=ax, label='Test', color='blue')
d['b'].plot(ax=ax, label='Predictions', color='crimson')
plt.title('LSTM Forecast', fontsize=18)
plt.legend(fontsize=12)
# 直接在ax对象上设置Y轴范围
ax.set_ylim([0, 50])
plt.show()

如果是预测数据未反缩放的问题

如果你的真实数据(对应示例的a列)是反归一化后的结果,而预测数据(b列)还处于归一化状态,就需要先对预测数据做反缩放处理。假设你之前用MinMaxScaler将原始数据缩放到了[0,1]范围,反缩放公式如下:

# 示例:假设原始数据的最小值是0,最大值是50
# 替换成你实际缩放时用的min和max值
scaled_min = 0
scaled_max = 50
# 反缩放预测数据
d['b'] = d['b'] * (scaled_max - scaled_min) + scaled_min

处理后再绘图,就能保证两列数据在同一量级,Y轴也能正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:32:03