Matplotlib에서 그래프를 화면에 표시할 때 plt.show()와 fig.show() 중 어떤 것을 사용해야 할지 혼란스러울 수 있습니다. 두 메서드의 차이점을 명확히 이해하면 코드 작성이 훨씬 수월해집니다.
plt.show()와 fig.show()의 핵심 차이
plt.show()는 인터랙티브(대화형) 모드가 아닐 때, 즉 일반 스크립트 실행 환경에서 플롯을 화면에 표시하는 데 필요합니다. 반면 fig.show()는 인터랙티브 모드에서 여러 개의 figure 객체를 한 번에 화면에 띄우고 싶을 때 유용합니다.
간단한 예제를 통해 plt.show()와 fig.show()의 동작 차이를 직접 확인해 보겠습니다.
실행 단계
iPython 셸을 실행합니다.
그림(figure) 크기를 설정하고 서브플롯 간의 여백(padding)을 조정합니다.
새 figure를 생성하거나 기존 figure를 활성화합니다.
plot() 메서드를 사용하여 선 그래프를 그립니다.
show() 메서드로 그림을 표시합니다.
인터랙티브하게 그림을 띄우려면 block=False 옵션과 함께 show() 메서드를 사용합니다.
예제 코드
import numpy as np from matplotlib import pyplot as plt # 그림 크기 설정 plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # 새 figure 생성 fig = plt.figure() # 선 그래프 그리기 plt.plot(np.linspace(-5, 5, 100)) fig.show() plt.show(block=False)
출력 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

주목할 점은 이 출력 결과가 오직 인터랙티브 모드에서만 나타난다는 것입니다. 인터랙티브 모드가 아닌 일반 환경에서는 block=True(기본값) 상태로 plt.show()를 호출해야 그래프가 정상적으로 화면에 표시됩니다.
정리
즉, Jupyter Notebook이나 iPython 같은 대화형 환경에서 작업할 때는 fig.show() 또는 block=False 옵션으로 유연하게 그림을 관리할 수 있고, 파이썬 스크립트 파일(.py)을 실행하는 일반적인 경우에는 plt.show()를 호출해야 플롯이 제대로 표시된다는 점을 기억하세요.