iBetter Books
수정

"그럼 어떤 방식이 더 좋은 거예요?"

지윤이 물었다. 팀장은 잠시 생각하더니 말했다.

"입문용으로는 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를 쓰면 되는 거죠?"

"딱 맞아요. 그 기준을 머릿속에 두면 앞으로 어떤 예제 코드를 봐도 헷갈리지 않을 거예요."