我想绘制一些随季节变化的时间序列,并使用axvspan将图中冬季部分的阴影与夏季部分的阴影不同。我使用pyplot.plot_date。我的y值是一个np浮点数数组,我的x值是一个np datetime对象数组,使用
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
有什么办法可以解决这个问题吗?
2条答案
按热度按时间bnl4lu3b1#
在matplotlib中,日期时间轴也使用数字,即
Matplotlib使用浮点数表示日期,指定从0001-01-01 UTC起的天数加1。
许多函数如
plot
、scatter
、bar
等自动将datetime
对象转换为这些数字,而许多辅助函数如axvspan
直到matplotlib的最新版本才进行这种自动转换。所以在matplotlib 3中你可以很容易地
但如果使用较旧的版本,您需要手动执行,使用
matplotlib.dates.date2num
,例如一些完整的例子:
nwo49xxi2#
感谢ImportanceOfBeingErnest的帮助,对于任何一个阅读这是我如何用冬季/夏季背景和单一标签的情节: