2011-11-25 42 views
23

Estoy haciendo una visualización de los datos históricos de stock para un proyecto, y me gustaría destacar las regiones de caídas. Por ejemplo, cuando el stock está experimentando una reducción significativa, me gustaría destacarlo con una región roja.En un gráfico matplotlib, ¿puedo resaltar rangos de valores x específicos?

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

+0

Se podría dibujar un rectángulo de forma automática ... es lo que ya tiene los valores de x que definen el inicio/parada de la región a ser destacado-? Si es así, puedes dibujar un parche Rectangle para resaltar esa sección (¡házmelo saber si necesitas un ejemplo!) – Daan

Respuesta

45

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

enter image description here

Si utiliza fechas, entonces usted necesita para convertir sus valores mínimo y máximo x a matplotlib fechas. Use matplotlib.dates.date2num para objetos datetime o matplotlib.dates.datestr2num para varias marcas de tiempo de cadenas.

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

enter image description here

+0

Estoy usando fechas para mi eje x, y estoy teniendo problemas para hacerlo funcionar. ¿Algun consejo? – Alex

+0

Ver la edición. Necesitará convertir sus fechas al formato de fecha interna de matplotlib (es solo un número de punto flotante, donde un rango de 1 corresponde a 1 día). Mire 'matplotlib.dates' para varias funciones para tratar con esto. ¡Espero que ayude! –

+0

¿Se puede hacer esto en una trama 3D? Me gustaría resaltar el plano XY para un corte específico a lo largo del eje z. – Kartik

Cuestiones relacionadas