Python 강좌 / Matplotlib로 분석 결과 시각화하기
Matplotlib은 데이터와 축·눈금·라벨을 명시해 그래프를 만드는 라이브러리입니다. 비교할 값과 단위가 분명한 막대그래프부터 시작하고, 화면 표시와 파일 저장을 구분해 실행 환경에 맞게 사용합니다.
비교 질문과 차트 종류
분류별 지출 합계를 비교하려면 범주를 가로축, 금액을 세로축에 둔 막대그래프가 적절할 수 있습니다. 날짜에 따른 변화를 보려면 순서가 있는 시계열이 필요합니다. 그래프는 잘못된 집계를 고쳐 주지 않으므로 먼저 수치·단위·누락 여부를 확인합니다.
관련 동작과 지원 조건은 Matplotlib로 분석 결과 시각화하기 관련 공식 문서에서 확인할 수 있습니다.
python -m pip install matplotlib
한글 라벨은 설치된 글꼴에 따라 표시가 달라집니다. 이 예제는 환경에 없는 한글 글꼴에 의존하지 않도록 영문 분류를 사용합니다. 실제 한글 보고서는 사용 가능한 글꼴과 라이선스를 확인해 지정합니다.
전체 예제와 실행 결과
별도의 실습 폴더에서 아래 파일을 UTF-8로 저장합니다. 가상환경을 선택한 터미널에서 python chart.py 명령으로 실행합니다. macOS·Ubuntu에서 가상환경을 사용하지 않는 경우 명령 이름을 python3으로 바꿉니다.
chart.py 파일의 전체 내용입니다.
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
categories = ["food", "transport"]
amounts = [11500, 2500]
fig, ax = plt.subplots(figsize=(7, 4), layout="constrained")
bars = ax.bar(categories, amounts, color=["#2b6cb0", "#d69e2e"])
ax.set_ylabel("Amount (KRW)")
ax.set_title("Expenses by category")
ax.set_ylim(0, max(amounts) * 1.2)
ax.bar_label(bars, fmt="%.0f", padding=3)
fig.savefig("expense-chart.png", dpi=160)
plt.close(fig)
print("saved expense-chart.png")
예상 결과는 다음과 같습니다.
saved expense-chart.png
Figure·Axes와 백엔드
Figure는 전체 그림, Axes는 좌표축과 데이터가 표시되는 영역입니다. fig와 ax를 명시하면 여러 그래프를 만들 때 어떤 그림을 수정하는지 알기 쉽습니다. Agg는 GUI 없이 파일을 만드는 백엔드이므로 서버나 자동 보고서에서 사용할 수 있습니다.
데스크톱에서 창으로 보려면 Agg 지정 줄을 제거하고 저장 뒤 plt.show()를 사용합니다. 실행 환경에 GUI 지원이 없으면 창이 뜨지 않을 수 있습니다. 반복 생성 후 close를 호출해 사용한 그림 자원을 정리합니다.
정확하게 비교할 수 있는 출력 확인
- 저장 파일을 열어 두 막대와 11500·2500 라벨이 보이는지 확인합니다.
- 축 단위가 KRW인지, 0에서 시작하는지 확인합니다.
- 그림 폭을 좁혀 라벨 겹침·잘림을 확인한 뒤 원래 크기로 되돌립니다.
savefig는 같은 이름의 파일을 덮어씁니다. 보고서 버전이 필요하면 날짜나 실행 ID가 있는 새 경로를 정하세요. 축을 자르거나 면적·색을 과장해 작은 차이를 큰 차이처럼 보이게 만들지 않습니다.




