У меня есть два графика;один сверху и один снизу. Все, кроме метки 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()
Сюжет:
Как видите, нижний график отображает дату и время только 14 января, хотя данные находятся в период с 14 января по 24 января.