Локатор определяет местоположение галочек.Форматировщик форматирует метки в этих позициях.Использование форматера, например
ax1.xaxis.set_major_formatter(dates.DateFormatter('%d-%m-%Y/%H:%M'))
, следовательно, работает хорошо.Однако, используя set_xticklabels
после указания форматера, удаляет DateFormatter и заменяет его на FixedFormatter
.Следовательно, вы будете получать метки в автоматически выбранных позициях, но с метками, которые не соответствуют этим позициям.Следовательно, график будет помечен неправильно.Следовательно, никогда не следует использовать set_xticklabels
без указания пользовательского локатора , например, также через set_xticks
.
Здесь вообще нет необходимости использовать set_xticklabels
.Одного форматера достаточно.
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np
time_data = np.array([1.5376248e+09,1.5376932e+09,1.5377112e+09])
x = np.array([1,3,2])
date_1 = np.vectorize(dt.datetime.fromtimestamp)(time_data)
date = np.vectorize(mdates.date2num)(date_1)
myFmt = mdates.DateFormatter('%d-%m-%Y/%H:%M')
ax1 = plt.subplot2grid((4,4), (0,0), rowspan=4, colspan=4)
ax1.xaxis_date()
ax1.plot(date, x)
ax1.xaxis.set_major_formatter(myFmt)
plt.setp(ax1.get_xticklabels(), rotation=45, ha="right")
plt.show()
