Matplotlib에서 대화형(interactive) 플롯을 사용하려면 먼저 figure(그림 창)를 활성화해야 합니다. 이때 핵심 역할을 하는 것이 바로 plt.ion()과 plt.ioff()입니다.
plt.ion()은 대화형 모드를 켜는 함수로, 코드 한 줄 한 줄이 실행될 때마다 그래프가 실시간으로 갱신되어 즉각적인 피드백을 받을 수 있습니다. 반대로 plt.ioff()는 대화형 모드를 끄는 함수로, 이후의 변경 사항은 화면에 자동으로 반영되지 않습니다.
실제 동작 과정을 확인하기 위해 IPython 셸을 열고 아래 명령어를 순서대로 입력해 보겠습니다.
예제 코드
In [1]: %matplotlib auto
Using matplotlib backend: GTK3Agg
In [2]: import matplotlib.pyplot as plt
In [3]: fig, ax = plt.subplots() # 그림 창이 팝업으로 나타납니다. 직접 상호작용해 보세요.
In [4]: ln, = ax.plot(range(5)) # 선(line) 하나를 그립니다.
In [5]: ln.set_color("orange") # 방금 그린 선의 색상을 주황색으로 변경합니다.
In [6]: plt.ioff() # 대화형 모드를 종료합니다.
In [7]: ln.set_color("red")
# 이전 단계에서 대화형 모드를 껐기 때문에 색상 변경이 화면에 즉시 반영되지 않습니다.
In [8]: plt.ion() # 대화형 모드를 다시 시작합니다.실행 결과
위 코드를 실행하면 그래프 창이 열리고, 각 단계마다 선의 색상이 실시간으로 바뀌는 것을 확인할 수 있습니다.

핵심 정리
- %matplotlib auto: 백엔드를 활성화해 그림 창을 별도 창으로 띄웁니다.
- plt.ion(): 대화형 모드 ON — plot 객체의 속성 변경이 즉시 화면에 반영됩니다.
- plt.ioff(): 대화형 모드 OFF — 변경 사항이 자동으로 갱신되지 않으며, 필요 시 plt.draw()나 plt.show()를 호출해야 화면에 나타납니다.
이처럼 ion/ioff를 적절히 조합하면 데이터 탐색 과정에서 그래프를 실시간으로 조작하며 효율적으로 분석할 수 있습니다.