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

matplotlib绘制时间序列报错OverflowError: int too big to convert如何解决

解决方法

核心问题原因

主图X轴的Open_Time是带完整年月日的pandas datetime类型,而你生成的entry/exit时间存在两个问题:

  • 加.time()后得到的datetime.time类型,matplotlib无法直接转换为坐标数值,触发溢出报错
  • 去掉.time()后默认绑定1900-01-01的日期,和主图的实际日期范围完全不匹配,因此所有点被挤到X轴最左侧

具体操作步骤

  1. 先提取主图时间列的基准日期,保证新绘制的点和主图时间基准一致:
# 取时间列第一个值的日期作为基准,若为跨天数据可根据实际逻辑匹配对应日期
base_date = dataframe_tmp["Open_Time"].dt.date.iloc[0]
  1. 转换entry/exit时间时,替换为和主图一致的基准日期,不要调用.time():
# 先解析字符串为datetime对象
entry_time = datetime.datetime.strptime(i["entry_time"], "%H:%M:%S")
exit_time = datetime.datetime.strptime(i["exit_time"], "%H:%M:%S")
# 替换年月日为基准日期
entry_time = entry_time.replace(year=base_date.year, month=base_date.month, day=base_date.day)
exit_time = exit_time.replace(year=base_date.year, month=base_date.month, day=base_date.day)
  1. 复用主图的ax对象绘制点,避免坐标系混乱:
# 可根据需求调整marker、颜色等样式
ax.plot_date([entry_time, exit_time], [i["entry"], i["exit"]], marker='o', linestyle='', color='red')

效果说明

修改后绘制的点时间基准和主图完全一致,不会出现偏移问题。你之前已经设置了X轴格式化器mdates.DateFormatter('%H:%M:%S'),最终图表上只会显示时分秒,不会展示拼接的年月日,符合显示需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:36:06