여러 데이터 비교 + 범례 표시 : legend()

30 P
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])
실행 결과 예시
수학 향상: 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()