Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib 객체를 함수로 전달하는 방법: Axis, Axes, Figure 올바르게 다루기

Matplotlib에서 Axes(좌표축 영역)나 Figure(전체 그림) 같은 객체를 함수의 인자로 전달하면, 반복되는 시각화 코드를 깔끔하게 모듈화할 수 있습니다. 이 글에서는 여러 개의 서브플롯을 생성하고, 각 축(ax)을 별도의 플롯 함수에 넘겨 그래프를 그리는 방법을 단계별로 살펴보겠습니다.

구현 단계

  • Figure 크기를 설정하고 서브플롯 주변 및 사이의 여백(패딩)을 자동으로 조정합니다.
  • plot() 메서드에서는 인자로 받은 축(ax) 위에 x, y 데이터 포인트를 그립니다.
  • profile() 메서드에서는 Figure와 서브플롯 집합을 생성한 뒤, 각 축을 순회(iterate)하면서 plot() 메서드에 전달하여 그래프를 그립니다.
  • 3행 4열 구성으로 profile() 메서드를 호출합니다.
  • 마지막으로 show() 메서드를 사용해 결과 Figure를 화면에 표시합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

def plot(ax, x, y):
    ax.plot(x, y)

def profile(rows, cols):
    fig, axes = plt.subplots(rows, cols)
    for ax in axes:
        for a in ax:
            plot(a, np.random.rand(10), np.random.rand(10))

profile(3, 4)
plt.show()

실행 결과

위 코드를 실행하면 3×4 형태로 배치된 총 12개의 서브플롯이 생성되고, 각 축에는 무작위 데이터가 담긴 그래프가 렌더링됩니다.

Matplotlib 객체를 함수로 전달하는 방법: Axis, Axes, Figure 올바르게 다루기Matplotlib 객체를 함수로 전달하는 방법: Axis, Axes, Figure 올바르게 다루기

핵심 정리

이 패턴의 핵심은 개별 축 객체(ax)를 독립된 함수에 넘겨준다는 점입니다. 이렇게 하면 하나의 플롯 로직을 여러 서브플롯에 재사용할 수 있어 코드가 훨씬 간결해지고 유지보수가 쉬워집니다. 참고로 plt.subplots()는 행과 열이 각각 1개일 때 단일 Axes 객체를 반환하고, 그렇지 않으면 Axes 배열을 반환하므로 상황에 맞게 순회 처리하는 것이 좋습니다.