Cambie la frecuencia de tick en la frecuencia X (tiempo, no número) en matplotlib

Los datos de mi gráfico de python solo muestran 2 puntos en el eje x.

Me gustaría tener más, pero no sé cómo.

 x = [ datetime.datetime(1900,1,1,0,1,2), datetime.datetime(1900,1,1,0,1,3), ... ] # ( more than 1000 elements ) y = [ 34, 33, 23, ............ ] plt.plot( x, y ) 

El eje X solo muestra 2 puntos de intervalo. Intenté usar .xticks pero no funcionó para el eje X. Dio el siguiente error:

 TypeError: object of type 'datetime.datetime' has no len() 

Cualquiera sea la razón por la que obtiene 2 ticks solo de forma predeterminada, puede corregirlo (personalizarlo) cambiando el localizador de ticker utilizando un localizador de fechas.

 import matplotlib.pyplot as plt import matplotlib.dates as mdates x = [ datetime.datetime(1900,1,1,0,1,2), datetime.datetime(1900,1,1,0,1,3), ... ] # ( more than 1000 elements ) y = [ 34, 33, 23, ............ ] fig = plt.figure() ax = fig.add_subplot(1,1,1) plt.plot( x, y ) ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=15)) #to get a tick every 15 minutes ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M')) #optional formatting 

Tiene varios localizadores (por ejemplo: DayLocator, WeekdayLocator, MonthLocator, etc.) leído en la documentación:

http://matplotlib.org/api/dates_api.html

Pero tal vez este ejemplo ayude más:

http://matplotlib.org/examples/api/date_demo.html

 plt.plot( matplotlib.dates.date2num( x ), y ) # matplotlib needs float-s, not  instances