여러 그래프 나란히 배치하기 : plt.subplot()

30 P
QUESTION 10 #380
하나의 화면에 선 그래프와 막대 그래프를 나란히 배치하는 프로그램입니다. 빈칸을 채우세요.
main.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [10, 20, 15, 25, 30]
y2 = [5, 15, 10, 20, 18]

# 1행 2열 배치의 첫 번째(왼쪽) 그래프
plt.(1, 2, 1)
plt.plot(x, y1, marker='o')
plt.title('Line Graph')

# 1행 2열 배치의 두 번째(오른쪽) 그래프
plt.(1, 2, 2)
plt.bar(x, y2)
plt.title('Bar Graph')

plt.tight_layout()
plt.show()

print("그래프 A 합계:", sum(y1))
print("그래프 B 합계:", sum(y2))
실행 결과 예시
그래프 A 합계: 100
그래프 B 합계: 68
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

subplot()으로 여러 그래프 배치하기

plt.subplot()은 하나의 화면(Figure)에 여러 그래프를 격자 형태로 배치하는 함수입니다.

기본 문법

plt.subplot(행 수, 열 수, 그래프 번호)

subplot(1, 2, 1)의 의미

plt.subplot(1, 2, 1)    plt.subplot(1, 2, 2)

  1행 2열 중 1번째         1행 2열 중 2번째

┌──────────┬──────────┐
│ (1,2,1)  │ (1,2,2)  │
│ 선 그래프 │ 막대 그래프│
│          │          │
└──────────┴──────────┘

다양한 배치 예시

subplot(1,2,n): 가로 배치    subplot(2,1,n): 세로 배치
┌──────┬──────┐             ┌────────────┐
│  1   │  2   │             │     1      │
└──────┴──────┘             ├────────────┤
                            │     2      │
                            └────────────┘

subplot(2,2,n): 2x2 배치
┌──────┬──────┐
│  1   │  2   │
├──────┼──────┤
│  3   │  4   │
└──────┴──────┘

번호 순서

번호는 왼쪽 위부터 오른쪽으로, 그 다음 줄로 이동합니다:

subplot(2, 3, n)의 번호 순서:
┌───┬───┬───┐
│ 1 │ 2 │ 3 │
├───┼───┼───┤
│ 4 │ 5 │ 6 │
└───┴───┴───┘

tight_layout()의 역할

plt.tight_layout()이 없으면 제목이나 라벨이 겹칠 수 있습니다:

# ❌ 겹침 발생 가능
plt.subplot(1,2,1)
plt.plot(x, y1)
plt.title('Graph A')
plt.subplot(1,2,2)
plt.bar(x, y2)
plt.title('Graph B')
plt.show()

# ✅ 자동 간격 조정
plt.tight_layout()  # ← show() 전에 호출
plt.show()

코드 작성 순서

# 1. 첫 번째 위치 선택
plt.subplot(1, 2, 1)
# 2. 첫 번째 그래프 그리기
plt.plot(x, y1)
plt.title('Graph A')

# 3. 두 번째 위치 선택
plt.subplot(1, 2, 2)
# 4. 두 번째 그래프 그리기
plt.bar(x, y2)
plt.title('Graph B')

# 5. 레이아웃 정리 후 표시
plt.tight_layout()
plt.show()

💡 핵심: subplot(행, 열, 번호)로 위치를 선택한 뒤 그래프를 그리는 순서를 반복합니다.