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

Matplotlib axes.flat 완벽 정리: 서브플롯 배열을 1차원 반복자로 다루는 방법

Matplotlib에서 axes.flatsubplots()로 생성된 다차원 축(axes) 배열을 1차원 반복자(iterator)로 변환해 주는 속성입니다. 덕분에 중첩 루프 없이도 모든 서브플롯에 순서대로 접근할 수 있습니다. 아래 예제를 통해 실제 사용법을 살펴보겠습니다.

구현 단계

  • 그림 크기를 설정하고 서브플롯 사이 및 주변 여백(padding)을 조정합니다.
  • subplots() 메서드를 사용해 figure와 서브플롯 집합을 생성합니다.
  • numpy를 활용해 x, y 데이터 포인트를 만듭니다.
  • axes.flat을 사용해 생성된 모든 축 객체를 반복(iterate)합니다.
  • plot() 메서드로 x, y 데이터를 각 축에 그립니다.
  • show() 메서드로 최종 그림을 화면에 표시합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, axes = plt.subplots(nrows=2, ncols=3)
x = np.random.rand(10)
y = np.random.rand(10)
for _, ax in enumerate(axes.flat):
    ax.plot(x, y)
plt.show()

출력 결과

Matplotlib axes.flat 완벽 정리: 서브플롯 배열을 1차원 반복자로 다루는 방법

axes.flat이 유용한 이유

plt.subplots(nrows=2, ncols=3)는 2행 3열 형태의 2차원 numpy 배열을 반환합니다. 이 배열을 그대로 순회하면 행마다 한 번씩 총 두 번의 루프가 필요하고, 내부 배열을 다시 처리해야 하는 번거로움이 있습니다. 반면 axes.flat을 사용하면 배열이 1차원으로 평탄화되어 단 하나의 for 루프만으로 6개의 서브플롯 전체에 깔끔하게 접근할 수 있습니다. 서브플롯 개수가 많아질수록 코드 가독성과 유지보수성이 크게 향상되므로, Matplotlib에서 여러 그래프를 일괄 처리할 때 널리 사용되는 관용적 패턴입니다.