"그럼 어떤 방식이 더 좋은 거예요?"
지윤이 물었다. 팀장은 잠시 생각하더니 말했다.
"입문용으로는 pyplot이 편해요. 그런데 실무에서는 대부분 객체지향 방식을 써요. 나중에 서브플롯을 다루거나, 함수로 그래프를 만들어야 할 때 객체지향이 훨씬 명확하거든요."
객체지향 방식이란
객체지향(OO, Object-Oriented) 방식은 Figure와 Axes를 변수에 명시적으로 저장하고, 그 변수를 통해 메서드를 호출하는 방식입니다.
import matplotlib.pyplot as plt# 객체지향 방식fig, ax = plt.subplots(figsize=(8, 4))ax.plot([1, 2, 3], [4, 5, 6]) # ax에 직접 그리기ax.set_title('객체지향 방식') # ax.set_title()ax.set_xlabel('X') # ax.set_xlabel()ax.set_ylabel('Y')ax.grid(True)plt.show()


pyplot vs 객체지향 — 메서드 대응표
같은 기능이지만 호출하는 방법이 다릅니다.
| 기능 | pyplot 방식 | 객체지향 방식 |
|---|---|---|
| 제목 | plt.title('제목') |
ax.set_title('제목') |
| x축 레이블 | plt.xlabel('X') |
ax.set_xlabel('X') |
| y축 레이블 | plt.ylabel('Y') |
ax.set_ylabel('Y') |
| x축 범위 | plt.xlim(0, 10) |
ax.set_xlim(0, 10) |
| 그리드 | plt.grid(True) |
ax.grid(True) |
| 범례 | plt.legend() |
ax.legend() |
객체지향이 더 명확한 이유
Figure와 Axes 객체를 변수에 담아두기 때문에 "어느 그래프에 적용하는지"가 코드에서 명확하게 보입니다.
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))ax1.plot([1, 2, 3], [4, 5, 6])ax1.set_title('첫 번째 그래프') # ax1에 적용ax2.plot([1, 2, 3], [6, 5, 4])ax2.set_title('두 번째 그래프') # ax2에 적용plt.tight_layout()plt.show()
pyplot 방식으로는 이 코드를 깔끔하게 쓰기 어렵습니다.
이 교재의 방침
이 교재에서는 두 방식을 모두 사용합니다. 단순한 예제는 plt.*로 간결하게, 여러 그래프를 다루거나 복잡한 레이아웃이 필요할 때는 fig, ax 방식을 사용합니다. 코드 맨 위에 항상 어떤 방식인지 주석으로 표시합니다.
"이제 감이 와요." 지윤이 말했다. "간단한 거 하나 그릴 때는 plt.plot() 쓰고, 여러 개 배치하거나 함수로 만들 때는 fig, ax를 쓰면 되는 거죠?"
"딱 맞아요. 그 기준을 머릿속에 두면 앞으로 어떤 예제 코드를 봐도 헷갈리지 않을 거예요."