[matplotlib] matplotlib의 수직 및 수평선

지정된 한계에서 수평선과 수직선을 만들 수없는 이유를 잘 모르겠습니다. 이 상자로 데이터를 묶고 싶습니다. 그러나 양측은 내 지시를 따르지 않는 것 같습니다. 왜 이런거야?

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

여기에 이미지 설명 입력



답변

호출하는 pyplot 함수 axhline()axvline()좌표에 관계없이 축 범위의 일부에 걸쳐있는 선을 그립니다. 매개 변수 xmin또는 ymin값 0.0을 축의 최소값으로 사용하고 1.0을 축의 최대 값으로 사용합니다.

대신를 사용 plt.plot((x1, x2), (y1, y2), 'k-')하여 점 (x1, y1)에서 점 (x2, y2)까지 k 색상으로 선을 그립니다. 을 참조하십시오 pyplot.plot.


답변

이것은 Matplotlib의 새로운 사용자가 수직선과 수평선을 그리는 일반적인 문제 일 수 있습니다. 이 문제를 이해하려면 Matplotlib에 다른 좌표계가 존재 한다는 사실을 알아야합니다 .

axhlineaxvline 메서드 는 좌표축 좌표에 선을 그리는 데 사용됩니다 . 이 좌표계에서 플롯의 데이터 범위에 관계없이 왼쪽 하단 지점의 좌표는 (0,0)이고 오른쪽 상단 지점의 좌표는 (1,1)입니다. 매개 변수 xmin및 둘 다 xmax[0,1] 범위에 있습니다.

반면에 방법 hlinesvlines데이터 좌표에 선을 그리는 데 사용됩니다 . 의 범위 xminxmaxX 축의 데이터 한도의 범위에있다.

구체적인 예를 들어 보겠습니다.

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

다음 플롯이 생성됩니다.
여기에 이미지 설명 입력

xminxmax에 대한 값 은 axhlinehlines메서드에 대해 동일합니다 . 그러나 생산 라인의 길이가 다릅니다.


답변

경계 상자를 추가하려면 직사각형을 사용하십시오.

ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)

Rectangle 문서


답변