¿Cómo cambio el rango del eje x con tiempos de datos en matplotlib?

Estoy tratando de trazar una gráfica de fechas en el eje xy valores en el eje y. Funciona bien, excepto que no puedo lograr que el rango del eje x sea apropiado. El rango del eje x es siempre de enero de 2012 a enero de 2016, a pesar de que mis fechas son de hoy. Incluso estoy especificando que xlim debería ser la primera y la última fecha.

Estoy escribiendo esto para python-django, si eso es relevante.

import datetime import matplotlib.pyplot as plt x = [datetime.date(2014, 1, 29), datetime.date(2014, 1, 29), datetime.date(2014, 1, 29)] y = [2, 4, 1] fig, ax = plt.subplots() ax.plot_date(x, y) ax.set_xlim([x[0], x[-1]]) canvas = FigureCanvas(plt.figure(1)) response = HttpResponse(content_type='image/png') canvas.print_png(response) return response 

Y aquí está la salida: introduzca la descripción de la imagen aquí

Editar:

Después de haber visto datos reales del OP, todos los valores están en la misma fecha / hora. Así que matplotlib está automáticamente alejando el eje x. Aún puede establecer manualmente los límites del eje x con objetos de datetime y datetime


Si hago algo como esto en matplotlib v1.3.1:

 import datetime import matplotlib.pyplot as plt x = [datetime.date(2014, 1, 29), datetime.date(2014, 1, 29), datetime.date(2014, 1, 29)] y = [2, 4, 1] fig, ax = plt.subplots() ax.plot_date(x, y, markerfacecolor='CornflowerBlue', markeredgecolor='white') fig.autofmt_xdate() ax.set_xlim([datetime.date(2014, 1, 26), datetime.date(2014, 2, 1)]) ax.set_ylim([0, 5]) 

Yo obtengo:

introduzca la descripción de la imagen aquí

Y los límites de los ejes coinciden con las fechas que especifiqué.