PROGRESS
7 / 10
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
QUESTION 07 #377
두 과목의 월별 점수 변화를 하나의 그래프에 비교하고, 범례(legend)로 각 선이 무엇인지 표시하는 프로그램입니다. 빈칸을 채우세요.
main.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
months = [3, 4, 5, 6, 7]
math = [70, 75, 80, 85, 90]
eng = [80, 78, 82, 88, 95]
# 두 개의 선 그래프를 하나의 그래프에 그립니다.
plt.plot(months, math, label='Math')
plt.plot(months, eng, label='English')
# 범례(어떤 선이 어떤 데이터인지 표시)를 추가합니다.
plt.()
plt.title('Score Trend')
plt.show()
print("수학 향상:", math[-1] - math[0])
print("영어 향상:", eng[-1] - eng[0])
HINT
힌트: 범례는 영어로 legend("레전드")라고 하며, 그래프에서 각 선의 이름을 보여주는 상자입니다.
실행 결과 예시
수학 향상: 20 영어 향상: 15
INTERACTIVE SHELL
Shift + Enter 로 즉시 실행
여러 데이터 비교와 범례(Legend)
하나의 그래프에 여러 선을 겹쳐 그려 데이터를 비교할 수 있습니다.
핵심 패턴
# 1. 각 선에 label(이름) 부여
plt.plot(x, data1, label='이름1')
plt.plot(x, data2, label='이름2')
# 2. legend()로 범례 표시
plt.legend()
동작 과정
점수
95 | · (영어)
90 | ·/ ·
85 | · /
80 | · · / ← 수학: 70→90 (꾸준히 상승)
75 | · / ← 영어: 80→95 (후반 급상승)
70 | · /
+--+--+--+--+--
3 4 5 6 7월
┌──────────┐
│ ─ Math │ ← 범례(legend)
│ ─ English│
└──────────┘
label이 없으면 legend도 없다
# ❌ label 없이 legend 호출 → 빈 범례
plt.plot(months, math)
plt.legend()
# ✅ label 지정 후 legend 호출
plt.plot(months, math, label='Math')
plt.legend()
legend 위치 변경
plt.legend(loc='upper left') # 왼쪽 위
plt.legend(loc='lower right') # 오른쪽 아래
plt.legend(loc='best') # 자동 최적 위치 (기본값)
| loc 옵션 | 위치 |
|---|---|
'upper left' |
왼쪽 위 |
'upper right' |
오른쪽 위 |
'lower left' |
왼쪽 아래 |
'lower right' |
오른쪽 아래 |
'best' |
자동 (기본값) |
선 색상 자동 배정
plt.plot()을 여러 번 호출하면 matplotlib이 자동으로 다른 색상을 배정합니다. 수동 지정도 가능합니다:
plt.plot(months, math, color='blue', label='Math')
plt.plot(months, eng, color='red', label='English')
💡 핵심: 여러 데이터 비교 =
plt.plot()여러 번 +label+plt.legend()