2024-03-29 00:44:08 发布
网友
我想绘制一些随季节变化的时间序列,并使用axvspan来为冬季的部分绘制阴影,使其与夏季的部分不同。我正在使用pyplot.plot_date。我的y值是浮点的np数组,x值是用
datetime.strptime(date, '%m-%d-%Y').
我想用pyplot.axvspan来应用阴影,但它似乎只适用于x轴的常规数字,而我的x轴是日期。我遇到的错误是
有办法解决这个问题吗?在
在matplotlib中,日期时间轴也使用数字namely
Matplotlib represents dates using floating point numbers specifying the number of days since 0001-01-01 UTC, plus 1.
许多函数,如plot,scatter,bar等,都会自动将datetime对象转换为这些数字,而许多辅助函数,如axvspan,直到matplotlib的最新版本才进行这种自动转换。在
plot
scatter
bar
datetime
axvspan
所以在matplotlib 3中,您可以轻松地
ax.axvspan(datetime(2019,3,1), datetime(2019,3,31))
但如果使用旧版本,则需要手动执行,使用matplotlib.dates.date2num,例如
matplotlib.dates.date2num
一些完整的例子:
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()
感谢BeingerNest的帮助,任何一位阅读本文的人都是这样用冬/夏背景和单个标签制作的:
yearlist = ['2013','2014','2015','2016','2017','2018','2019'] fig, ax = plt.subplots(figsize=(20, 10)) for i in range(len(yearlist)): if yearlist[i] == '2013': ax.axvspan(date2num(datetime.datetime(2012,10,15)), date2num(datetime.datetime(int(yearlist[i]),5,15)), label="winter (15 october - 15 may)", color="crimson", alpha=0.3) ax.axvspan(date2num(datetime.datetime(int(yearlist[i]),5,15)), date2num(datetime.datetime(int(yearlist[i]),10,15)), label="summer (15 may - 15 october)", color="blue", alpha=0.3) else: ax.axvspan(date2num(datetime.datetime(int(yearlist[i-1]),10,15)), date2num(datetime.datetime(int(yearlist[i]),5,15)) , color="crimson", alpha=0.3) ax.axvspan(date2num(datetime.datetime(int(yearlist[i]),5,15)), date2num(datetime.datetime(int(yearlist[i]),10,15)), color="blue", alpha=0.3)
在matplotlib中,日期时间轴也使用数字namely
许多函数,如
plot
,scatter
,bar
等,都会自动将datetime
对象转换为这些数字,而许多辅助函数,如axvspan
,直到matplotlib的最新版本才进行这种自动转换。在所以在matplotlib 3中,您可以轻松地
但如果使用旧版本,则需要手动执行,使用
^{pr2}$matplotlib.dates.date2num
,例如一些完整的例子:
感谢BeingerNest的帮助,任何一位阅读本文的人都是这样用冬/夏背景和单个标签制作的:
相关问题 更多 >
编程相关推荐