1. Matplotlib 개요
Matplotlib은 파이썬에서 데이터를 시각화하기 위한 대표적인 라이브러리이다.
데이터 분석이나 머신러닝 과정에서 데이터를 이해하기 위해 다양한 그래프를 생성할 때 사용된다.
지원하는 주요 그래프
- 선 그래프 (Line Plot)
- 막대 그래프 (Bar Chart)
- 수평 막대 그래프 (Horizontal Bar)
- 산점도 (Scatter Plot)
- 히스토그램 (Histogram)
- 파이 차트 (Pie Chart)
Matplotlib은 NumPy, Pandas와 함께 사용되는 경우가 많다.
2. Matplotlib 기본 구조
Matplotlib의 그래프는 다음과 같은 구조로 이루어진다.
| 구성요소 | 설명 |
|---|---|
| Figure | 전체 그래프가 그려지는 도화지 |
| Axes | 실제 그래프가 그려지는 영역 |
| Axis | x축, y축 |
구조 개념
Figure
└ Axes
├ x-axis
└ y-axis
3. Matplotlib 기본 사용
라이브러리 불러오기
import matplotlib.pyplot as plt
pyplot은 Matplotlib에서 가장 많이 사용하는 모듈이다.
4. 기본 선 그래프
하나의 데이터만 입력하는 경우
plt.plot([1, 2, 3, 4])
plt.show()
# 결과
# x축은 자동으로 0,1,2,3이 생성되고
# y값은 [1,2,3,4]로 선 그래프가 그려진다.
Matplotlib은 y값만 입력하면 x값을 자동으로 생성한다.
x와 y를 함께 지정하는 경우
plt.plot([1, 2, 3, 4], [1, 2, 3, 4])
plt.show()
# 결과
# x=[1,2,3,4]
# y=[1,2,3,4]
# 대각선 형태의 선 그래프가 출력된다.
5. NumPy 데이터를 이용한 그래프
Matplotlib은 NumPy 배열과 함께 많이 사용된다.
import numpy as np
data = np.arange(1, 100)
plt.plot(data)
plt.show()
# 결과
# 1부터 99까지 증가하는 선 그래프가 출력된다.
np.arange()는 일정 간격의 배열을 생성할 때 사용된다.
6. 여러 개의 그래프 동시에 그리기
Matplotlib에서는 plot()을 여러 번 호출하면 여러 개의 그래프가 같은 좌표에 표시된다.
data1 = np.arange(1, 50)
plt.plot(data1)
data2 = np.arange(50, 100)
plt.plot(data2)
plt.show()
# 결과
# 두 개의 선 그래프가 같은 그래프 영역에 함께 출력된다.
7. Matplotlib에서 지원하는 주요 그래프
함수그래프 종류설명
| plt.plot() | 선 그래프 | 연속적인 데이터 추세 |
|---|---|---|
| plt.bar() | 막대 그래프 | 범주형 데이터 비교 |
| plt.barh() | 수평 막대 그래프 | 막대를 가로 방향으로 표시 |
| plt.scatter() | 산점도 | 변수 간 관계 표현 |
| plt.hist() | 히스토그램 | 데이터 분포 확인 |
| plt.pie() | 파이 차트 | 비율 표현 |
8. 그래프 스타일 설정
그래프의 시각적 요소는 다양한 옵션을 통해 설정할 수 있다.
한글 폰트 설정
Matplotlib은 기본적으로 한글이 깨질 수 있기 때문에 폰트를 설정해야 한다.
plt.rc('font', family='NanumBarunGothic')
9. 그래프 크기 및 제목 설정
plt.figure(figsize=(4, 5))
plt.plot([1, 2, 3], [1, 2, 3])
plt.title('제목', fontsize=30)
plt.xlabel('X축', fontsize=20)
plt.ylabel('Y축', fontsize=20, rotation=0)
plt.show()
# 결과
# 제목, x축, y축 이름이 설정된 그래프가 출력된다.
옵션 설명
옵션설명
| figsize | 그래프 크기 |
|---|---|
| title | 그래프 제목 |
| xlabel | x축 이름 |
| ylabel | y축 이름 |
| fontsize | 글자 크기 |
| rotation | 텍스트 회전 |
10. 그래프 스타일 옵션
선 그래프는 다양한 스타일 옵션을 사용할 수 있다.
plt.figure(figsize=(15, 10))
plt.title('마커설정', fontsize=30)
plt.plot(
np.arange(10),
np.arange(10),
color='deepskyblue',
marker='o',
linestyle='-.'
)
plt.plot(
np.arange(10),
np.arange(10)*2,
color='deeppink',
marker='x',
linestyle='--'
)
plt.show()
# 결과
# 서로 다른 색상과 마커 스타일을 가진 두 개의 선 그래프가 출력된다.
주요 옵션
옵션설명
| color | 선 색상 |
|---|---|
| marker | 점 모양 |
| linestyle | 선 스타일 |
11. 막대 그래프
막대 그래프는 범주형 데이터를 비교할 때 사용된다.
x = ['파이썬', '웹개발', '데이터분석', '머신러닝', '딥러닝', '컴퓨터비전']
y = [95, 70, 75, 60, 50, 30]
plt.figure(figsize=(8, 5))
plt.title('AI 성적표', fontsize=25)
plt.ylabel('수강생 점수')
plt.bar(x, y, alpha=0.5, color='deeppink')
plt.show()
# 결과
# 각 과목에 대한 점수를 막대 그래프로 표시한다.
옵션 설명
옵션설명
| alpha | 투명도 |
|---|---|
| color | 색상 |
12. 수평 막대 그래프
x = ['파이썬', '웹개발', '데이터분석', '머신러닝', '딥러닝', '컴퓨터비전']
y = [95, 70, 75, 60, 50, 30]
plt.figure(figsize=(8, 5))
plt.title('AI 성적표', fontsize=25)
plt.xlabel('수강생 점수')
plt.barh(x, y, alpha=0.5, color='deepskyblue')
plt.show()
# 결과
# 막대 그래프가 가로 방향으로 출력된다.
13. Pandas 데이터와 Matplotlib
Matplotlib은 Pandas DataFrame과 함께 자주 사용된다.
import pandas as pd
x = ['파이썬', '웹개발', '데이터분석', '머신러닝', '딥러닝', '컴퓨터비전']
y = [95, 70, 75, 60, 50, 30]
df = pd.DataFrame({
"과목": x,
"점수": y
})
print(df)
# 결과
# 과목 점수
# 0 파이썬 95
# 1 웹개발 70
# 2 데이터분석 75
# 3 머신러닝 60
# 4 딥러닝 50
# 5 컴퓨터비전 30
14. 객체지향 방식 그래프 생성
Matplotlib은 객체지향 방식으로 그래프를 생성할 수도 있다.
fig, ax = plt.subplots(figsize=(5, 4))
ax.bar(df["과목"], df["점수"])
ax.set_xlabel("과목", fontsize=12)
ax.set_ylabel("점수", fontsize=12)
ax.set_title("코리아 학생 점수", fontsize=20)
plt.show()
# 결과
# Pandas 데이터프레임을 이용한 막대 그래프가 출력된다.
구성
객체역할
| fig | 전체 도화지 |
|---|---|
| ax | 실제 그래프 |
15. 정리
Matplotlib은 파이썬에서 데이터를 시각화하기 위한 핵심 라이브러리이다.
핵심 개념
- plt.plot() → 선 그래프
- plt.bar() → 막대 그래프
- plt.barh() → 수평 막대 그래프
- plt.figure() → 그래프 크기 설정
- title / xlabel / ylabel → 그래프 정보 표시
또한 Matplotlib은 다음 라이브러리와 함께 사용되는 경우가 많다.
- NumPy → 수치 데이터 생성
- Pandas → 데이터 분석 및 데이터프레임 시각화
'KDT 수업 > 파이썬 공부' 카테고리의 다른 글
| 내가 보려고 정리한 OpenCV 정리 with GPT (0) | 2026.03.27 |
|---|---|
| 내가 보려고 만든 파이토치(Pytorch) 정리 (0) | 2026.03.18 |
| 내가 보려고 만든 크롤링 정리 (0) | 2026.03.12 |
| 내가 보려고 만든 판다스 정리 (0) | 2026.03.12 |
| 내가 보려고 만든 NumPy 정리 (1) | 2026.03.12 |