Matplotlib에서 그래프를 그릴 때 가장 먼저 마주하게 되는 두 함수가 바로 plt.figure()와 plt.subplots()입니다. 두 함수 모두 Figure(그림 영역)를 생성하지만, 반환하는 값과 활용 방식에 중요한 차이가 있습니다.
plt.figure() — 새로운 Figure를 생성하거나, 이미 존재하는 Figure를 활성화합니다. 이 함수는 Figure 객체 자체만 반환합니다.
plt.subplots() — 하나의 Figure와 서브플롯(Axes) 집합을 동시에 생성합니다. Figure와 Axes를 한 번에 얻을 수 있어 실무에서 가장 널리 사용됩니다.
아래 간단한 예제를 통해 두 함수의 차이를 직접 확인해 보겠습니다.
진행 단계
- Figure 크기를 설정하고, 서브플롯 사이 및 주변 여백(padding)을 조정합니다.
- plt.figure() 메서드를 사용하여 새 Figure를 생성하거나 기존 Figure를 활성화합니다.
- plt.subplots() 메서드를 사용하여 Figure와 서브플롯 세트를 함께 생성합니다.
- plt.show() 메서드를 호출하여 그래프를 화면에 표시합니다.
예제 코드
from matplotlib import pyplot as plt
# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
# plt.figure로 새 Figure 생성
fig1 = plt.figure("Figure 1 - plt.figure")
# plt.subplots로 Figure와 서브플롯 동시 생성
fig2, ax = plt.subplots()
plt.title("Figure 2 - plt.subplots")
# 그래프 표시
plt.show()
출력 결과
plt.figure()를 실행하면 다음과 같은 빈 Figure 창이 나타납니다.

반면, plt.subplots()를 실행하면 Axes가 포함된 Figure가 아래와 같이 생성됩니다.

핵심 차이점 요약
| 구분 | plt.figure() | plt.subplots() |
|---|---|---|
| 반환값 | Figure 객체만 반환 | (Figure, Axes) 튜플 반환 |
| Axes 생성 | 별도로 add_subplot() 호출 필요 | 자동으로 Axes 생성 |
| 다중 플롯 | nrows, ncols 지원 안 함 | nrows, ncols로 격자형 레이아웃 구성 가능 |
| 추천 용도 | Figure 속성(크기, 배경색 등)만 제어할 때 | 대부분의 일반적인 시각화 작업 |
정리하면, 축(Axes)까지 한 번에 준비되는 plt.subplots()가 대부분의 경우 더 편리하고 권장되는 방법이며, plt.figure()는 Figure 수준의 세부 설정이 필요할 때 유용합니다.