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

Matplotlib绘图报错:Failed to convert value(s) to axis units datetime 求助

解决Matplotlib绘制折线图时的datetime轴单位转换错误

你的代码报错核心原因是x轴参数(delta, 35)混合了timedelta对象和整数类型,Matplotlib没法把这两种不同类型的值统一转换成datetime轴的单位,所以抛出了Failed to convert value(s) to axis units datetime错误。

下面给两种可行的修正方案:

方案1:将timedelta转为天数(整数类型)

直接把delta转换成对应的天数(用delta.days属性),让x轴两个值都是整数,类型统一:

import matplotlib.pyplot as plt
import numpy as np
from datetime import date

d0 = date(2023, 12, 1)
d1 = date.today()
delta = d1 - d0

mm7g = np.array([82.9, 82.8, 82.9])

# 把timedelta转为天数,和35保持类型一致
plt.plot((delta.days, 35), (mm7g[-1], 78), zorder=0, color='g', linewidth=0.4, ls='--')

plt.show()

方案2:用日期对象作为x轴(保留datetime轴显示)

如果需要x轴显示具体日期,把整数35转换成对应的日期(基于d0往后推35天),x轴用两个日期对象,Matplotlib会自动处理datetime轴:

import matplotlib.pyplot as plt
import numpy as np
from datetime import date, timedelta

d0 = date(2023, 12, 1)
d1 = date.today()
# 计算d0往后35天的日期
d35 = d0 + timedelta(days=35)

mm7g = np.array([82.9, 82.8, 82.9])

# x轴传入日期对象,Matplotlib自动识别datetime类型
plt.plot((d1, d35), (mm7g[-1], 78), zorder=0, color='g', linewidth=0.4, ls='--')

# 自动旋转日期标签,避免重叠
plt.gcf().autofmt_xdate()

plt.show()

方案1适合只需要展示天数差值的场景,方案2适合需要在x轴显示具体日期的需求,根据你的实际情况选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:33:19