Когда я рисую данные по времени и времени, охватывая более двух дней, я устанавливаю datelocator на 0 и 30 минут. Основной тик на каждые полчаса, matplotlib выдает ошибку. Рассмотрим этот пример:
from datetime import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
datapoints = 3600*24*2 #2 days, 1 datapoint/second
data = range(datapoints) #anydata
timestamps = [ datetime.fromtimestamp(t) for t in range(datapoints) ]
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.xaxis.set_major_locator(mdates.MinuteLocator(byminute=[0,30]))
plt.plot(timestamps,data)
plt.show()
Затем я получаю следующую ошибку:
RuntimeError: RRuleLocator, по оценкам, генерирует 2879 тиков от 1970-01-01 01: 00: 00 + 00: 00-1970-01-03 00: 59: 59 + 00: 00: превышает Locator.MAXTICKS * 2 (2000)
2879 тиков - это точно количество минут в этот промежуток времени, то есть оценка основана на 1 тике каждую минуту. Однако локатор должен давать 1 тик каждые 30 минут (2 тика в час в течение 48 часов = 96 тиков). Почему оценка и реальная ценность до сих пор находятся друг от друга?
Обходным решением будет повышение значения MAXTICKS:
locator = mdates.MinuteLocator(byminute=[0,30])
locator.MAXTICKS = 1500
ax.xaxis.set_major_locator(locator)
Это работает, и график прекрасно показывает. Однако это не нужно правильно? Почему эта ошибка возникает в первую очередь? Я использую datelocator wronly?