gpt4 book ai didi

python - 将 axvspan 用于日期范围

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:27 24 4
gpt4 key购买 nike

我想绘制一些随季节变化的时间序列,并使用 axvspan 将图中冬季部分的阴影与夏季部分的阴影不同。我正在使用 pyplot.plot_date .我的 y 值是一个 np float 数组,我的 x 值是一个 np 日期时间对象数组,使用

    datetime.strptime(date, '%m-%d-%Y'). 

我想使用 pyplot.axvspan应用阴影,但它似乎只适用于 x 轴的常规数字,而我的 x 轴是日期。我遇到的错误是

    ValueError: view limit minimum -36858.05 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-datetime value to an axis that has datetime units

有什么办法可以解决这个问题?

最佳答案

在 matplotlib 中,日期时间轴也使用数字,namely

Matplotlib represents dates using floating point numbers specifying the number of days since 0001-01-01 UTC, plus 1.

plotscatterbar 等许多函数会自动将 datetime 对象转换为这些数字,而许多辅助函数,如 axvspan,直到最新版本的 matplotlib 才进行这种自动转换。

所以在 matplotlib 3 中你可以轻松做到

ax.axvspan(datetime(2019,3,1), datetime(2019,3,31))

但如果使用旧版本,则需要手动执行,使用 matplotlib.dates.date2num,例如

ax.axvspan(date2num(datetime(2019,3,1)), date2num(datetime(2019,3,31)))

一些完整的例子:

from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import date2num

fig, ax = plt.subplots()

ax.plot([datetime(2019,2,14), datetime(2019,4,26)], [1,2])

ax.axvspan(date2num(datetime(2019,3,1)), date2num(datetime(2019,3,31)),
label="March", color="crimson", alpha=0.3)

ax.legend()
fig.autofmt_xdate()
plt.show()

enter image description here

关于python - 将 axvspan 用于日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55866957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com