Posterior a consultar con expertos en esta materia, programadores de deferentes ramas y maestros dimos con la respuesta a la cuestión y la compartimos en esta publicación.
Solución:
Las funciones de pyplot a las que llama, axhline()
y axvline()
dibujar líneas que abarquen una parte del rango del eje, independientemente de las coordenadas. Los parametros xmin
o ymin
use el valor 0.0 como el mínimo del eje y 1.0 como el máximo del eje.
En su lugar, utiliza plt.plot((x1, x2), (y1, y2), 'k-')
para dibujar una línea desde el punto (x1, y1) hasta el punto (x2, y2) en color k. Ver pyplot.plot
.
Este puede ser un problema común para los nuevos usuarios de Matplotlib para dibujar líneas verticales y horizontales. Para comprender este problema, debe tener en cuenta que existen diferentes sistemas de coordenadas en Matplotlib.
Los métodos axhline y axvline se utilizan para dibujar líneas en el coordenadas de ejes. En este sistema de coordenadas, la coordenada del punto inferior izquierdo es (0,0), mientras que la coordenada del punto superior derecho es (1,1), independientemente del rango de datos de su gráfico. Tanto el parámetro xmin
y xmax
están en el rango [0,1].
Por otro lado, los métodos hlines y vlines se utilizan para dibujar líneas en el coordenada de datos. El rango para xmin
y xmax
están en el rango de límite de datos del eje x.
Tomemos un ejemplo concreto,
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 5, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
ax.hlines(y=0.6, xmin=0.0, xmax=1.0, color='b')
plt.show()
Producirá la siguiente trama:
El valor para xmin
y xmax
son los mismos para el axhline
y hlines
método. Pero la longitud de la línea producida es diferente.
Si desea agregar un cuadro delimitador, use un rectángulo:
ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)
Rectangle
Doc
Puntuaciones y reseñas
Nos encantaría que puedieras difundir esta crónica si te ayudó.