Anotar la ttwig de la serie temporal en Matplotlib

Tengo una matriz de índice (x) de fechas (objetos de fecha y hora) y una matriz de valores reales (y: precios de los bonos). Haciendo (en iPython):

plot(x,y) 

Produce un gráfico de series de tiempo perfectamente fino con el eje x marcado con las fechas. No hay problema hasta ahora. Pero quiero agregar texto en ciertas fechas. Por ejemplo, en 2009-10-31 deseo mostrar el texto “Evento 1” con una flecha que apunta al valor y en esa fecha.

He leído a través de la documentación de Matplotlib en text () y annotate () en vano. Solo cubre ejes x estándar numerados, y no puedo inferir cómo trabajar esos ejemplos en mi problema.

Gracias

Related of "Anotar la ttwig de la serie temporal en Matplotlib"

Matplotlib utiliza un formato de punto flotante interno para las fechas.

Solo necesita convertir su fecha a ese formato (usando matplotlib.dates.date2num o matplotlib.dates.datestr2num ) y luego usar annotate como de costumbre.

Como un ejemplo un tanto excesivamente lujoso:

 import datetime as dt import matplotlib.pyplot as plt import matplotlib.dates as mdates x = [dt.datetime(2009, 05, 01), dt.datetime(2010, 06, 01), dt.datetime(2011, 04, 01), dt.datetime(2012, 06, 01)] y = [1, 3, 2, 5] fig, ax = plt.subplots() ax.plot_date(x, y, linestyle='--') ax.annotate('Test', (mdates.date2num(x[1]), y[1]), xytext=(15, 15), textcoords='offset points', arrowprops=dict(arrowstyle='-|>')) fig.autofmt_xdate() plt.show() 

introduzca la descripción de la imagen aquí