matplotlib: нарисуйте ярлыки основных меток под небольшими надписями

Кажется, это должно быть легко – но я не вижу, как это сделать:

У меня есть график со временем по оси X. Я хочу установить два набора тиков, минорные тики, показывающие час дня и основные тики, показывающие день / месяц. Поэтому я делаю это:

# set date ticks to something sensible: xax = ax.get_xaxis() xax.set_major_locator(dates.DayLocator()) xax.set_major_formatter(dates.DateFormatter('%d/%b')) xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3))) xax.set_minor_formatter(dates.DateFormatter('%H')) 

Это указывает на тики в порядке, но основные метки ярлыков (день / месяц) нарисованы поверх ярлыков метки:

Sig. временные ряды ансамбля высоты волны

Как заставить основные метки ярлыков рисовать ниже второстепенных? Я попытался помещать символы переноса строки (\ n) в DateFormatter, но это плохое решение, поскольку вертикальный интервал не совсем прав.

Любой совет будет принят во внимание!

    Вы можете использовать метод axis set_tick_params() с помощью pad . Сравните следующий пример.

     import datetime import random import matplotlib.pyplot as plt import matplotlib.dates as dates # make up some data x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(100)] y = [i+random.gauss(0,1) for i,_ in enumerate(x)] # plot plt.plot(x,y) # beautify the x-labels plt.gcf().autofmt_xdate() ax = plt.gca() # set date ticks to something sensible: xax = ax.get_xaxis() xax.set_major_locator(dates.DayLocator()) xax.set_major_formatter(dates.DateFormatter('%d/%b')) xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3))) xax.set_minor_formatter(dates.DateFormatter('%H')) xax.set_tick_params(which='major', pad=15) plt.show() 

    PS : Этот пример заимствован из moooeeeep