지정된 한계에서 수평선과 수직선을 만들 수없는 이유를 잘 모르겠습니다. 이 상자로 데이터를 묶고 싶습니다. 그러나 양측은 내 지시를 따르지 않는 것 같습니다. 왜 이런거야?
# 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에 다른 좌표계가 존재 한다는 사실을 알아야합니다 .
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
및 hlines
메서드에 대해 동일합니다 . 그러나 생산 라인의 길이가 다릅니다.
답변
경계 상자를 추가하려면 직사각형을 사용하십시오.
ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)