【发布时间】:2020-02-16 02:22:11
【问题描述】:
我有两个图表;一个在顶部,一个在底部。上图中除了 xaxis 标签之外的所有内容都是错误的,但在下图中,除了 xaxis 标签之外的所有内容都是正确的。所以很自然,人们会尽力用顶部图形的 xaxis 标签替换错误的 xaxis 标签,对吗?这就是我所做的,但由于某种原因,matplotlib 总是无法接受正确的 xaxis 标签,即使我几乎强制输入 xaxis 标签输入。
以下代码生成我提到的两个图表。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
np.random.seed(0)
x_var1= pd.date_range(datetime(2014, 1, 14, 9, 0),datetime(2014, 1, 24, 17, 0),
freq="30min",
tz= 'US/Pacific',
closed= 'left'
)
x_var1 = x_var1[x_var1.dayofweek < 5]
x_var1= x_var1[x_var1.indexer_between_time('9:00','17:00', include_end= False)]
x_var1= x_var1[x_var1.hour != 12]
y_var1= np.random.normal(loc= 40, scale= 4.4, size= len(x_var1))
int_gap_idx= np.nonzero((x_var1[:-1].hour!= 9) & (x_var1[1:].hour== 9))[0]
fig, ax= plt.subplots(nrows= 2, ncols= 1)
ax[0].plot(x_var1, y_var1)
ax[0].set_title("Except the xaxis label, everything is wrong on this graph")
x_var2= np.arange(len(x_var1))
ax[1].plot(x_var2, y_var1)
ax[1].set_title("Except the xaxis label, everything is correct on this graph")
[ax[1].axvline(gap_index, ls= '--') for gap_index in int_gap_idx]
#date_str= x_var1.strftime('%b-%d %H:%M')
ax[1].set_xticklabels(x_var1)
#print(date_str)
plt.xticks(rotation= 45)
plt.tight_layout()
plt.show()
剧情:
如您所见,底部图表仅显示 1 月 14 日的日期时间,即使数据介于 1 月 14 日和 1 月 24 日之间。
【问题讨论】:
-
ax[1].set_xticklabels([dt.strftime('%b-%d %H:%M') for dt in x_var1[::14])?
标签: python pandas datetime matplotlib time-series