matplotlib: dibujar tags de tic mayor bajo tags de menor importancia

Esto parece que debería ser fácil, pero no puedo ver cómo hacerlo:

Tengo una ttwig con el tiempo en el eje X. Quiero establecer dos juegos de tics, tics menores que muestran la hora del día y tics importantes que muestran el día / mes. Así que hago esto:

# 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')) 

Esto marca las marcas de verificación bien, pero las tags de marca principales (día / mes) se dibujan sobre las tags de marca menores:

Sig. serie temporal de la altura de las olas

¿Cómo puedo forzar que las tags de marcas principales se dibujen debajo de las menores? Intenté colocar caracteres de escape de nueva línea (\ n) en el DateFormatter, pero es una solución pobre ya que el espaciado vertical no es correcto.

Cualquier consejo sería apreciado!

Puede usar el método de axis set_tick_params() con el pad palabras clave. Compara el siguiente ejemplo.

 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() 

PD : este ejemplo es tomado de moooeeeep


Así es como se representaría el fragmento anterior: