Это может быть распространенной проблемой для новых пользователей Matplotlib при рисовании вертикальных и горизонтальных линий. Чтобы понять эту проблему, вы должны знать, что в Matplotlib существуют разные системы координат .
Метод axhline и axvline используются для рисования линий в осях координат . В этой системе координат координата левой нижней точки равна (0,0), а координата правой верхней точки - (1,1), независимо от диапазона данных вашего графика. Оба параметра xmin
и xmax
находятся в диапазоне [0,1].
С другой стороны, методы hlines и vlines используются для рисования линий в координатах данных . Диапазон для xmin
и xmax
находится в пределах диапазона данных по оси x.
Возьмем конкретный пример,
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()
Это даст следующий сюжет:
Значения xmin
и xmax
одинаковы для метода axhline
and hlines
. Но длина производимой лески другая.