메모
전체 예제 코드를 다운로드 하려면 여기 를 클릭 하십시오.
대화식 기능 #
이것은 ginput, waitforbuttonpress 및 수동 clabel 배치와 같은 대화식 기능의 사용 예를 제공합니다.
메모
이 예제는 Matplotlib의 대화형 기능을 실행하며 정적 문서에는 나타나지 않습니다. 상호 작용을 보려면 컴퓨터에서 이 코드를 실행하십시오.
개별 부분을 복사하여 붙여넣거나 페이지 하단의 링크를 사용하여 전체 예제를 다운로드할 수 있습니다.
세 점을 클릭하여 삼각형 정의
plt.figure()
plt.xlim(0, 1)
plt.ylim(0, 1)
tellme('You will define a triangle, click to begin')
plt.waitforbuttonpress()
while True:
pts = []
while len(pts) < 3:
tellme('Select 3 corners with mouse')
pts = np.asarray(plt.ginput(3, timeout=-1))
if len(pts) < 3:
tellme('Too few points, starting over')
time.sleep(1) # Wait a second
ph = plt.fill(pts[:, 0], pts[:, 1], 'r', lw=2)
tellme('Happy? Key click for yes, mouse click for no')
if plt.waitforbuttonpress():
break
# Get rid of fill
for p in ph:
p.remove()
이제 삼각형 모서리로부터의 거리에 따라 윤곽을 그리십시오 - 단지 예일 뿐입니다.
# Define a nice function of distance from individual pts
def f(x, y, pts):
z = np.zeros_like(x)
for p in pts:
z = z + 1/(np.sqrt((x - p[0])**2 + (y - p[1])**2))
return 1/z
X, Y = np.meshgrid(np.linspace(-1, 1, 51), np.linspace(-1, 1, 51))
Z = f(X, Y, pts)
CS = plt.contour(X, Y, Z, 20)
tellme('Use mouse to select contour label locations, middle button to finish')
CL = plt.clabel(CS, manual=True)
이제 줌을 해보세요
tellme('Now do a nested zoom, click to begin')
plt.waitforbuttonpress()
while True:
tellme('Select two corners of zoom, middle mouse button to finish')
pts = plt.ginput(2, timeout=-1)
if len(pts) < 2:
break
(x0, y0), (x1, y1) = pts
xmin, xmax = sorted([x0, x1])
ymin, ymax = sorted([y0, y1])
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
tellme('All Done!')
plt.show()