我正在编写一个 python 脚本,该脚本在用户指定的两个日期之间生成数据条形图
例如,用户在此处输入 11 月 30 日和 12 月 4 日
将日期时间导入为 dt
dateBegin = dt.date(2012,11,30)
dateEnd = dt.date(2012,12,4)
有没有办法返回 dateBegin 和 dateEnd 之间的日期数组?我想要的是 [30, 1, 2, 3, 4] 之类的东西。有什么建议么?
我正在编写一个 python 脚本,该脚本在用户指定的两个日期之间生成数据条形图
例如,用户在此处输入 11 月 30 日和 12 月 4 日
将日期时间导入为 dt
dateBegin = dt.date(2012,11,30)
dateEnd = dt.date(2012,12,4)
有没有办法返回 dateBegin 和 dateEnd 之间的日期数组?我想要的是 [30, 1, 2, 3, 4] 之类的东西。有什么建议么?
当然!您正在寻找matplotlib.dates.drange:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as ticker
import datetime as DT
dates = mdates.num2date(mdates.drange(DT.datetime(2012, 11, 30),
DT.datetime(2012, 12, 4),
DT.timedelta(days=1)))
print(dates)
# [datetime.datetime(2012, 11, 30, 0, 0, tzinfo=<matplotlib.dates._UTC object at 0x8c8f8ec>), datetime.datetime(2012, 12, 1, 0, 0, tzinfo=<matplotlib.dates._UTC object at 0x8c8f8ec>), datetime.datetime(2012, 12, 2, 0, 0, tzinfo=<matplotlib.dates._UTC object at 0x8c8f8ec>), datetime.datetime(2012, 12, 3, 0, 0, tzinfo=<matplotlib.dates._UTC object at 0x8c8f8ec>)]
vals = np.random.randint(10, size=len(dates))
fig, ax = plt.subplots()
ax.bar(dates, vals, align='center')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.xticks(rotation=25)
ax.set_xticks(dates)
plt.show()