I have two graphs; one on top and one at the bottom. Everything but the xaxis label is wrong on the top graph, but everything but the xaxis label is correct on the bottom graph. So naturally, one will try his/her best to replace the wrong xaxis label with the top graph's xaxis label right? That's what I did, but for some reason matplotlib always fails to accept the correct xaxis label even though I pretty much force-feed the xaxis label input.
The following code generates the two graphs I mentioned.
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()
The plot:
As you can see, the bottom graph only displays the datetime on Jan-14, even though the data is between Jan 14 and Jan 24.