python - legends - FIll entre dos líneas verticales en matplotlib
matplotlib title position (1)
matplotlib
los examples en la documentación matplotlib
, pero no estaba claro cómo puedo hacer una trama que llene el área entre dos líneas verticales específicas.
Por ejemplo, supongamos que quiero crear una gráfica entre x=0.2
y x=4
(para el rango completo de la gráfica). ¿Debo usar fill_between
, fill
o fill_betweenx
?
¿Puedo usar la condición where
para esto?
Parece que quieres axvspan
, en lugar de uno de los rellenos entre funciones. La diferencia es que axvspan
(y axhspan
) llenarán toda la extensión y (o x) de la trama, independientemente de cómo se acerque.
Por ejemplo, usemos axvspan
para resaltar la región x entre 8 y 14:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, alpha=0.5, color=''red'')
plt.show()
Podría usar fill_betweenx
para hacer esto, pero las extensiones (tanto xey) del rectángulo estarían en coordenadas de datos . Con axvspan
, las extensiones y del rectángulo por defecto son 0 y 1 y están en coordenadas de los ejes (en otras palabras, porcentajes de la altura de la gráfica).
Para ilustrar esto, hagamos que el rectángulo se extienda del 10% al 90% de la altura (en lugar de abarcar toda la extensión). Intente hacer zoom o panorámica, y observe que las extensiones y dicen que están fijadas en el espacio de visualización, mientras que las extensiones x se mueven con el zoom / panorámica:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, ymin=0.1, ymax=0.9, alpha=0.5, color=''red'')
plt.show()