본문 바로가기
인공지능/데이터분석

Matplotlib

by hyunji00pj 2025. 1. 17.

1. Matplotlib

Matplotlib은 파이썬에서 데이터를 시각화하는 데 널리 사용되는 강력한 라이브러리입니다. 다양한 그래프와 차트를 그릴 수 있으며, 선 그래프, 막대 그래프, 히스토그램, 산점도 등 기본적인 그래프부터 복잡한 3D 플롯까지 지원합니다. 사용법이 비교적 간단하고, 커스터마이징이 가능하여 데이터의 패턴과 트렌드를 효과적으로 표현할 수 있습니다. 또한, NumPy와 Pandas와 같은 데이터 분석 라이브러리와 잘 통합되어 데이터 과학, 머신러닝, 통계 등 다양한 분야에서 활용됩니다. Matplotlib의 기본 모듈인 pyplot은 MATLAB과 유사한 인터페이스를 제공해 초보자도 쉽게 사용할 수 있도록 설계되었습니다.

https://matplotlib.org/

 

Matplotlib — Visualization with Python

seaborn Cartopy DNA Features Viewer plotnine WCS Axes seaborn seaborn is a high level interface for drawing statistical graphics with Matplotlib. It aims to make visualization a central part of exploring and understanding complex datasets. statistical data

matplotlib.org

Matplotlib을 사용해 다양한 그래프를 만들어보자

 

!pip install matplotlib
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4]) # 리스트의 값들은 y값들이며, x값은 자동으로 만들어줌
plt.show()

plt.plot([1, 2, 3, 4], [1, 2, 3, 4])
plt.show()

data1 = np.arange(1, 50)
plt.plot(data1)
data2 = np.arange(50, 100)
plt.plot(data2)
plt.show()

# 여러개의 plot을 그리는 방법
# subplot(행개수, 열개수, plot번호)
data1 = np.arange(1, 50)
plt.subplot(2, 1, 1)
plt.plot(data1)

data2 = np.arange(50, 100)
plt.subplot(2, 1, 2) #2행1열은  2번 plot
plt.plot(data2)

plt.show()

2. 스타일 옵션

# 한글 fonts-nanum 설치 -> 런타임 > 런타임 세션 다시 시작 및 모두 실행
#sudo : 사용자 최고권한
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

plt.rc('font', family='NanumBarunGothic')
#plt.rc
plt.figure(figsize=(4,5)) #(4,5) 수치는 인치 전체 그림그려줄 판을 정하는것
plt.plot([1, 2, 3, 4])
plt.title('제목',fontsize=30)
plt.xlabel('x축',fontsize=10)
plt.ylabel('y축',fontsize=10,rotation=0)
plt.show()

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='v',linestyle='--')
plt.plot(np.arange(10),np.arange(10)*3,color='gold',marker='*',ms=10,linestyle='')

# 범례
# 기본 위치는 왼쪽 상단
plt.legend(['10', '10*2', '10*3'], fontsize=15, loc='lower right', ncol=3)

plt.xlim(0, 12)
plt.ylim(0, 30)

plt.xticks(rotation=30)#x축 눈금
plt.yticks(rotation=30)#y축 눈금

plt.show()

#막대그래프
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')#막대그래프 bar로 그리기 alpha: 투명도
plt.show()

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')#horison으로 막대그래프 그린거
plt.show()

import pandas as pd

x = ['파이썬', '웹개발', '데이터분석', '머신러닝', '딥러닝', '컴퓨터비전']
y = [95, 70, 75, 60, 50, 30]
df = pd.DataFrame({"과목":x, "점수":y})
# Figure (fig): 전체 그래프가 그려질 캔버스 역할
# Axes (ax): 실제 데이터가 그려지는 부분
fig,ax = plt.subplots(figsize=(5, 4))
ax.bar(df['과목'],df['점수'])#d이렇게 만드는거 기억

ax.set_xlabel("과목", fontsize=12)
ax.set_ylabel("점수", fontsize=12,rotation=0)

ax.set_title("코리아 학생 점수", fontsize=20)
ax.set_xticks(range(len(df.index)))
plt.tight_layout()#글자 안잘리게 자동으로 조정하기

plt.show()