Matplotlib에서 pyplot.show() 함수에 타임아웃(timeout)을 설정하면, 그래프 창이 일정 시간이 지나면 자동으로 닫히도록 만들 수 있습니다. 이는 데이터 시각화를 반복적으로 확인하거나 자동화된 스크립트를 실행할 때 특히 유용합니다. 아래 단계에 따라 구현할 수 있습니다.
구현 단계
- 그림 크기를 설정하고 서브플롯 주변의 여백(padding)을 조정합니다.
- 새로운 백엔드 전용 .Timer 클래스의 인스턴스를 생성합니다.
- 타이머가 만료되었을 때 호출될 콜백 함수로 plt.close()를 등록합니다.
- 데이터 포인트 목록을 그래프로 플롯합니다.
- 타이머를 시작합니다.
- show() 메서드를 사용하여 그림을 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
# 타이머 간격을 5000밀리초(5초)로 설정
timer = fig.canvas.new_timer(interval=5000)
timer.add_callback(plt.close)
plt.plot([1, 2, 3, 4, 5])
plt.ylabel('Y축 데이터')
timer.start()
plt.show()실행 결과

위 코드에서는 타이머 간격을 5000밀리초(5초)로 설정했습니다. 따라서 그래프 창이 열린 후 5초가 지나면 별도의 사용자 입력 없이 창이 자동으로 닫힙니다.
동작 원리
핵심은 fig.canvas.new_timer() 메서드입니다. 이 메서드는 현재 사용 중인 GUI 백엔드(TkAgg, Qt5Agg 등)에 맞는 타이머 객체를 생성합니다. add_callback()으로 등록된 함수는 설정된 간격이 경과할 때마다 호출되며, 여기서는 plt.close를 콜백으로 지정하여 현재 활성화된 그림 창을 닫습니다.
간격 값을 조정하고 싶다면 interval 매개변수의 값(밀리초 단위)만 변경하면 됩니다. 예를 들어 10초 후에 창을 닫으려면 interval=10000으로 설정하면 됩니다.