Python의 Matplotlib에서 그려진 그림(figure) 창을 키보드 입력으로 닫고 싶다면 plt.pause() 메서드와 input() 함수, close() 메서드를 함께 활용하면 됩니다. 이 방식은 사용자가 Enter 키를 누를 때까지 그림이 화면에 유지되며, 입력이 들어오면 자동으로 창이 닫히도록 제어할 수 있습니다.
구현 단계
- 그림 크기를 설정하고 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
- NumPy를 이용해 무작위 t와 y 데이터 포인트를 생성합니다.
- figure() 메서드로 새 그림을 만들거나 기존 그림을 활성화합니다.
- plot() 메서드로 t와 y 데이터 포인트를 그립니다.
- title() 메서드로 그래프의 제목을 설정합니다.
- draw() 메서드로 현재 그림을 다시 그려 화면에 반영합니다.
- pause() 메서드로 일정 시간 동안 그림을 일시 정지 상태로 유지합니다.
- input() 함수로 사용자의 키보드 입력(Enter)을 받아 다음 문장으로 진행합니다.
- close() 메서드로 그림 창을 닫습니다.
예제 코드
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
t = np.arange(0.0, 2.0, 0.01)
y = np.exp(-t)
fig = plt.figure()
plt.plot(t, y, lw=5, color='red')
plt.title("$y=e^{-t}$")
plt.draw()
plt.pause(1)
input("<Hit Enter>")
plt.close(fig)실행 결과
코드를 실행하면 지수 감소 곡선 $y=e^{-t}$가 빨간색 선으로 그려진 그림 창이 나타납니다. 콘솔에서 <Hit Enter> 메시지가 표시된 상태에서 Enter 키를 누르면, 열려 있던 그림 창이 즉시 닫히고 프로그램이 종료됩니다.

동작 원리 요약
핵심은 plt.draw()와 plt.pause() 조합입니다. Matplotlib는 기본적으로 스크립트 실행 중에는 그림을 실시간으로 렌더링하지 않기 때문에, draw()로 강제로 화면에 그린 뒤 pause()로 이벤트 루프를 잠깐 돌려줘야 창이 정상적으로 표시됩니다. 이후 input()이 프로그램 흐름을 멈추고 사용자 입력을 대기하며, Enter 키가 입력되면 close(fig)가 해당 figure 객체를 명시적으로 닫아 리소스를 해제합니다.