서브플롯과 레이아웃
여러 차트 결합하기
서브플롯과 레이아웃은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
여러 차트를 사용하는 이유
한 차트만으로는 충분하지 않은 경우가 많습니다. 여러 관점을 나란히 비교하거나 복잡한 그래프를 더 작은 패널로 나누고 싶을 수 있습니다. Matplotlib에서는 이를 하나의 그림 안에 여러 축 영역을 배치하는 작업이라고 합니다.
주요 도구는 plt.subplots(rows, cols)입니다.
축 영역 격자
fig, axes = plt.subplots(2, 3)은 2행 3열 격자의 그림을 만들어 축 영역 여섯 개를 제공합니다. axes 결과는 axes[0][1]처럼 인덱싱하는 2차원 배열입니다.
패널 수는 행 수와 열 수를 곱하면 됩니다.
rows, cols = 2, 3
total = rows * cols
print('Grid', rows, 'x', cols, '=', total, 'axes')
for r in range(rows):
for c in range(cols):
print('panel at', (r, c))축 영역 배열 인덱싱하기
행이 하나뿐이면 axes는 1차원입니다. axes[0], axes[1]을 사용하세요. 전체 격자에서는 2차원이므로 axes[row][col]을 사용합니다.
하위 그래프가 하나뿐일 때는 인덱싱이 전혀 필요하지 않습니다.
패널 순회하기
깔끔한 방식은 격자를 평탄화한 뒤 반복하면서 각 축 영역을 해당 데이터와 짝짓는 것입니다. 이렇게 하면 각 패널에 거의 동일한 코드를 반복해서 작성하지 않아도 됩니다.
datasets = ['A', 'B', 'C', 'D']
# imagine axes flattened to a list of 4
for i, name in enumerate(datasets):
print('Plot dataset', name, 'on flat axes index', i)축 공유하기
패널이 같은 척도를 공유할 때는 sharex=True 또는 sharey=True를 전달하세요. 그러면 하위 그래프가 하나의 공통 범위를 사용하므로 비교가 공정해지고 중복되는 눈금 레이블도 없어집니다.
시간에 따른 데이터를 여러 패널에 쌓아 표시할 때 적합합니다.
격자를 위한 그림 크기
격자에는 단일 그래프보다 더 넓은 공간이 필요합니다. 하위 그래프를 호출할 때 figsize=(width, height)로 인치 단위 크기를 설정하세요. 일반적으로 열과 행 수에 맞춰 크기를 조정합니다.
cols, rows = 3, 2
per_panel_w, per_panel_h = 3, 2.5
print('Suggested figsize:', (cols * per_panel_w, rows * per_panel_h))패널 사이 간격
패널끼리 서로 빽빽해질 수 있습니다. fig.tight_layout()은 대부분의 경우를 자동으로 해결합니다. 더 세밀하게 제어하려면 fig.subplots_adjust(wspace=0.4, hspace=0.4)를 사용해 가로 및 세로 간격을 설정하세요.
값이 클수록 하위 그래프 사이의 공간이 넓어집니다.
GridSpec을 사용한 불규칙한 배치
모든 배치가 균일한 격자일 필요는 없습니다. GridSpec을 사용하면 한 축 영역이 여러 행이나 열에 걸쳐 놓이게 할 수 있습니다. 예를 들어 위에는 넓은 차트를 두고 아래에는 작은 차트 두 개를 배치할 수 있습니다.
먼저 격자를 정의한 다음 배열처럼 슬라이스해 각 축 영역을 배치합니다.
범위 계획하기
GridSpec 슬라이스를 범위처럼 생각하세요. 모든 열에 걸쳐 있는 상단 차트는 gs[0, :]이고, 왼쪽 아래 차트는 gs[1, 0]입니다. 먼저 종이에 슬라이스를 계획하면 혼란을 피할 수 있습니다.
layout = {
'header': '[0, :] (full width)',
'left': '[1, 0] (bottom left)',
'right': '[1, 1] (bottom right)',
}
for name, slot in layout.items():
print(name.ljust(7), slot)하나의 그림, 하나의 이야기
여러 패널로 구성된 그림도 하나의 일관된 이야기를 전달해야 합니다. 공유하는 fig.suptitle(), 일관된 색상, 공유하는 척도를 사용해 패널들이 무작위로 붙은 모음이 아니라 하나의 단위로 읽히게 하세요.
패널별 사용자 지정
각 셀은 자체적인 축 영역이므로 독립적으로 사용자 지정할 수 있습니다. axes[0][0].set_title('Sales')는 왼쪽 위 패널에만 제목을 지정하고, axes[1][1].set_ylabel('Cost')는 오른쪽 아래 패널에만 레이블을 지정합니다.
이러한 독립성이 바로 격자에서 객체 지향 방식이 빛나는 이유입니다.
간단한 확인
여러 패널 배치에 대한 이해도를 확인해 보세요.
복습
이제 차트를 결합할 수 있습니다.
plt.subplots(rows, cols)는 축 영역 격자를 만듭니다axes[row][col]로 인덱싱하거나 평탄화한 뒤 반복합니다sharex/sharey는 척도를 맞추고,figsize는 격자 크기를 정합니다tight_layout과subplots_adjust는 간격을 관리합니다GridSpec을 사용하면 여러 셀에 걸친 패널을 만들 수 있습니다
자주 묻는 질문
“서브플롯과 레이아웃” 강의는 무료인가요?
네 — “서브플롯과 레이아웃” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“서브플롯과 레이아웃”에서 뭘 배우나요?
여러 차트 결합하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“서브플롯과 레이아웃” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Figure와 Axes
- 선 그래프, 막대 그래프와 산점도
- 플롯 사용자 지정
- 서브플롯과 레이아웃