líneas verticales y horizontales en matplotlib

No entiendo muy bien por qué no puedo crear líneas horizontales y verticales en límites especificados. Me gustaría vincular los datos en esta casilla. Sin embargo, los lados no parecen cumplir mis instrucciones. ¿Por qué es esto?

# CREATING A BOUNDING BOX # BOTTOM HORIZONTAL plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k') # RIGHT VERTICAL plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2, color='k') # LEFT VERTICAL plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k') plt.show() 

enter image description here

Las funciones pyplot a las que llama, axhline() y axvline() dibujan líneas que abarcan una parte del rango del eje, independientemente de las coordenadas. Los parámetros xmin o xmin usan el valor 0.0 como el mínimo del eje y 1.0 como el máximo del eje.

En su lugar, use plt.plot((x1, x2), (y1, y2), 'k-') para dibujar una línea desde el punto (x1, y1) hasta el punto (x2, y2) en el color k. Ver pyplot.plot .

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

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 .

El método axhline y axvline se usan para dibujar líneas en la coordenada de los ejes . En este sistema de coordenadas, la coordenada para la parte inferior izquierda es (0,0), mientras que la coordenada para la parte superior derecha es (1,1), independientemente del rango de datos de la gráfica. Tanto el parámetro xmin como xmax están en el rango [0,1].

Por otro lado, el método hlines y vlines se usan para dibujar líneas en la coordenada de datos . El rango para xmin y xmax está en el rango del 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 ttwig: enter image description here

El valor para xmin y xmax es el mismo para el método axhline y hlines . Pero la longitud de la línea producida es diferente.