Jupyter 노트북에서 작업하다 보면 대화형(interactive) 모드로 그린 여러 Figure 중 일부만 상호작용을 비활성화하고 싶은 경우가 있습니다. 이럴 때 plt.ioff()를 사용하면 해당 시점 이후의 Figure 상호작용을 프로그래밍 방식으로 손쉽게 중지할 수 있습니다.
구현 단계
아래 명령어를 순서대로 실행합니다.
- %matplotlib auto — 백엔드를 자동으로 설정합니다.
- import matplotlib.pyplot as plt — pyplot 모듈을 임포트합니다.
- plt.rcParams["figure.figsize"] = [7.50, 3.50] — Figure 크기를 지정합니다.
- plt.rcParams["figure.autolayout"] = True — 레이아웃 자동 조정을 활성화합니다.
- plt.subplots()로 Figure와 서브플롯 축을 생성합니다.
- 생성된 축에 선 그래프를 그립니다.
- plt.ioff()를 호출하여 상호작용 모드를 끕니다.
- show() 메서드로 Figure를 화면에 표시합니다.
예제 코드
In [1]: %matplotlib auto
Using matplotlib backend: Qt5Agg
In [2]: import matplotlib.pyplot as plt
In [3]: plt.rcParams["figure.figsize"] = [7.50, 3.50]
...: plt.rcParams["figure.autolayout"] = True
In [4]: fig, ax = plt.subplots()
In [5]: ax.plot([2, 4, 7, 5, 4, 1])
Out[5]: [<matplotlib.lines.Line2D at 0x7fa6e00f5e48>]
In [6]: plt.ioff()
In [7]: ax.plot([1, 1, 2, 1, 2, 2])
Out[7]: [<matplotlib.lines.Line2D at 0x7fa6e0063ef0>]
In [8]: fig.show()
실행 결과

plt.ioff()가 호출된 이후에는 Figure가 즉시 업데이트되지 않으며, fig.show()를 직접 호출해야 화면에 표시됩니다. 이처럼 ioff()와 ioff()를 적절히 활용하면 노트북에서 대화형 플롯과 정적 플롯을 상황에 맞게 혼합하여 사용할 수 있습니다.