[英]How to show date from a time-series graph on Matplotlib a plot
[英]matplotlib show minutes time-series in hour (change xticklabels)
我的代码显示一天中每分钟是否缺货:
sq_t = df_stock_quantity_log[['is_stockout']].resample('T').ffill().fillna(0).astype(int).squeeze()
nrows =10
fig, axs = plt.subplots(nrows=nrows, figsize=(18, 40))
for idx, date in enumerate(df.index[:nrows]):
s = sq_t[date.strftime('%Y-%m-%d')]
if len(s) < 24*60:
s = np.concatenate((np.zeros(24*60-len(s)),s))
axs[idx].plot(s, label=idx)
plt.legend(loc='best')
plt.show()
输出是
我想将xtick更改为0〜23并将代码更改为
fig, axs = plt.subplots(nrows=nrows, figsize=(18, 40))
for idx, date in enumerate(df.index[:nrows]):
s = sq_t[date.strftime('%Y-%m-%d')]
if len(s) < 24*60:
s = np.concatenate((np.zeros(24*60-len(s)),s))
axs[idx].plot(s, label=idx)
axs[idx].set_xticks(s)
axs[idx].set_xticklabels(['h %d' % (ii/ 60,) for ii in range(0, 24*60 , 60)])
plt.legend(loc='best')
plt.show()
但是结果非常糟糕:
sq_t
信息:
PS:我知道第一天图片的xticklabel是错误的,因为我没有为其设置适当的日期时间索引。 这里只是一个例子。
我不知道为什么结果看起来很糟糕。 我的解决方案是首先删除sq_t
的DatetimeIndex,然后set_xticks看起来不错。
sq_t = df_stock_quantity_log[['is_stockout']].resample('T').ffill().fillna(0).astype(int).squeeze()
nrows =10
fig, axs = plt.subplots(nrows=nrows, figsize=(18, 40))
for idx, date in enumerate(df.index[:nrows]):
s = sq_t[date.strftime('%Y-%m-%d')]
if len(s) < 24*60:
s = pd.Series(np.concatenate((np.zeros(24*60-len(s)),s)))
axs[idx].plot(s.reset_index(drop=True), label=idx)
axs[idx].set_xticks(range(0, 24*60, 60))
axs[idx].set_xticklabels(['h%d' % (ii/ 60,) for ii in range(0, 24*60 , 60)])
plt.legend(loc='best')
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.