iBetter Books
수정

"지윤 씨, 인터넷에서 Matplotlib 예제 찾아보면 코드가 두 가지 스타일인 거 느껴봤어요?"

팀장이 질문했다. 지윤은 고개를 끄덕였다. 어제 예제를 찾아보다가 똑같은 그래프인데 코드가 다른 걸 보고 혼란스러웠다.

"맞아요. 어떤 건 plt.plot()으로 시작하고, 어떤 건 fig, ax = ...로 시작하던데 뭐가 다른 거예요?"

"그게 Matplotlib을 처음 배우는 사람이 가장 먼저 부딪히는 질문이에요. 오늘 그걸 명확히 정리해드릴게요."


가장 짧은 코드

먼저 가장 단순한 코드로 그래프를 그립니다.

import matplotlib.pyplot as plt# 데이터months = [1, 2, 3, 4, 5, 6]sales = [120, 145, 130, 160, 175, 190]# 그래프plt.plot(months, sales)plt.title('월별 매출')plt.xlabel('월')plt.ylabel('매출 (만원)')plt.show()

실행 결과

이 코드가 동작하는 이유는, plt.plot()을 호출하는 순간 Matplotlib이 내부적으로 Figure와 Axes를 자동으로 만들어주기 때문입니다. 우리는 그 내부를 보지 못하지만, 분명히 존재합니다.


Figure, Axes, Axis — Matplotlib의 세 가지 구성요소

그래프 하나를 만들면 실제로는 세 가지 객체가 생성됩니다.

Figure (도화지)
└── Axes (그래프 영역)
    ├── Axis X (x축)
    └── Axis Y (y축)
객체 역할 비유
Figure 전체 캔버스 도화지
Axes 실제 그래프가 그려지는 영역 도화지 위의 그래프
Axis 각 축 (x축, y축)

한 Figure 안에 여러 Axes가 있을 수 있습니다. 이것이 서브플롯입니다.


두 가지 방식의 선택 기준

상황 권장 방식
그래프 1개, 간단한 시각화 pyplot (plt.*)
그래프 여러 개 (서브플롯) 객체지향 (fig, ax)
세밀한 커스터마이징 객체지향 (fig, ax)
함수 안에서 Figure를 반환 객체지향 (fig, ax)

다음 절에서 두 방식의 차이를 코드로 비교합니다.