En un gráfico de matplotlib, ¿puedo resaltar rangos de valores x específicos?

Estoy haciendo una visualización de los datos históricos de stock para un proyecto, y me gustaría resaltar las regiones de caídas. Por ejemplo, cuando el stock está experimentando una reducción significativa, me gustaría resaltarlo con una región roja.

¿Puedo hacer esto automáticamente, o tendré que dibujar un rectángulo o algo?

Eche un vistazo a axvspan (y axhspan para resaltar una región del eje y).

 import matplotlib.pyplot as plt plt.plot(range(10)) plt.axvspan(3, 6, color='red', alpha=0.5) plt.show() 

introduzca la descripción de la imagen aquí

Si está usando fechas, entonces deberá convertir sus valores mínimo y máximo x a fechas de matplotlib. Utilice matplotlib.dates.date2num para objetos de datetime y datetime o matplotlib.dates.datestr2num para varias marcas de tiempo de cadena.

 import matplotlib.pyplot as plt import matplotlib.dates as mdates import datetime as dt t = mdates.drange(dt.datetime(2011, 10, 15), dt.datetime(2011, 11, 27), dt.timedelta(hours=2)) y = np.sin(t) fig, ax = plt.subplots() ax.plot_date(t, y, 'b-') ax.axvspan(*mdates.datestr2num(['10/27/2011', '11/2/2011']), color='red', alpha=0.5) fig.autofmt_xdate() plt.show() 

introduzca la descripción de la imagen aquí