co-code 님의 블로그
matplotlib을 이용한 시각화 본문
시작하기 앞서 라이브러리를 설치 및 로드하자.
#필요 라이브러리 설치
!pip install matplotlib
#라이브러리 로드
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#현재 컴퓨터의 os확인하기 위한 라이브러리 로드
import platform
- 선 그래프
#인자를 1개만 입력하면 그래프의 y축의 데이터가 입력(x축은 0부터 1씩 증가하는 기본값
plt.plot([5,4,3,2,1])
#plt안에 show() : 그래프를 보여준다.(ipynb에서는 사용을 안해도 그래프는 출력됨)
plt.show()

#인자가 2개안 경우 : 첫번째 인자가 x축의 데이터, 두번째 인자가 y축의 데이터
plt.plot([1,2,3,4],[70,50,100,90])
#첫번째 인자의 길이와 두번째 인자의 길이가 같아야 한다.
plt.show()

x=[1,2,3,4]
y=[70,80,100,90]
#선의 종류를 변경
plt.plot(x,y,'--' )
plt.show()
#선의 색상을 변경
plt.plot(x,y,'r')
plt.show()


#선의 색상과 종류를 한번에 변경
plt.plot(x,y,'r--')
plt.show()

- plt 함수 정리
- plt : 도화지를 생성(도화지의 크기를 지정, 도화지의 영역의 개수를 지정)
- plt.plot() : 선그래프를 추가
- plt.figure() : 그래프의 사이즈 변경
- 매개변수 figsize로 조정
- plt.option() : 추가적인 디자인이나 범위를 설정, x축이나 y축의 이름, 그래프의 이름 등을 지정
- plt.show() : 결과물을 보여줌(보여준 후 도화지는 초기화)
- plt.title() : 그래프의 제목 지정
- plt.xlabel() : x축의 이름(label) 지정
- plt.ylabel() : y축의 이름(label) 지정
- plt.legend() : 그래프에 범례 추가
- loc 매개변수 : 범례의 위치 지정
- 그래프를 그릴때 한글 깨짐 현상 발생하면?
- os 버전 확인 후 폰트 설정
# platform.system() : os 확인(os가 윈도우인 경우는 windows 출력, MAC의 경우 Darwin 출력)
if platform.system() == 'Darwin':
#MAC인 경우
plt.rc('font',family='AppleGothic')
else:
plt.rc('font',family='Malgun Gothic')
- 막대 그래프
x=[1,2,3]
y1=[10,6,3]
#막대 그래프(수직)
plt.bar(x,y1)
plt.show()

#막대그래프(수평)
plt.barh(x,y1)
plt.show()

#막대그래프 색상, 너비 변경
plt.bar(x,y1,width=0.4,color=['red', 'green'])
plt.show()

#막대그래프에서 특정 막대를 선택해서 색상을 변경
bar_graph=plt.bar(x,y1)
#bar_graph에서 2번째 막대[index 1]의 색상을 변경
#색상은 이름, Hex 코드 사용
bar_graph[1].set_color("#FF239C")
plt.show()

- 산점도 그래프
- 데이터의 분포도를 확인하기 위한 그래프(데이터의 상관관계를 확인)
#랜덤 데이터 100개씩 무작위로 생성
x=np.random.random(100)
y=np.random.random(100)
plt.scatter(x,y)
plt.show()

- 히트맵
- 상관계수 corr()를 이용하여 계산
- seaborn 라이브러리 안에 존재
#seaborn 라이브러리 설치
!pip install seaborn
#라이브러리 로드
import seaborn as sns
# 1. 무작위 데이터 생성 (100x5 행렬)
np.random.seed(42)
data = np.random.randint(1, 101, size=(100, 5)) # 1 이상 101 미만
columns = ['사과', '바나나', '체리', '대추야쟈', '블루베리']
df = pd.DataFrame(data, columns=columns)
# 2. 상관계수 행렬 계산
corr = df.corr()
corr
| 사과 | 바나나 | 체리 | 대추야자 | 블루베리 | |
| 사과 | 1.000000 | -0.018213 | -0.027363 | 0.060134 | -0.084403 |
| 바나나 | -0.018213 | 1.000000 | 0.046865 | 0.026977 | 0.176050 |
| 체리 | -0.027363 | 0.046865 | 1.000000 | -0.054803 | 0.094776 |
| 대추야자 | 0.060134 | 0.026977 | -0.054803 | 1.000000 | 0.192378 |
| 블루베리 | -0.084403 | 0.176050 | 0.094776 | 0.192378 | 1.000000 |
# 3. 히트맵 시각화 설정
#corr를 이용해서 히트맵
#seaborn 라이브러리 안에 heaatmmap()함수
plt.figure(figsize=(12,8))
sns.heatmap(data=corr.values,
annot=True, #주석 표시 유무
square=True, #히트탭 정사각형 표시 유무
fmt=".3f", #주석의 소수점 자리수를 지정(소수점 셋째자리까지)
annot_kws={'size':20}, #주석의 환경 설정(글자의 크기를 변경)
cbar=True, #사이드바 표시 유무
cmap='Greens', #컬러맵(히트맵의 색상을 변경)
)
plt.title('랜덤 데이터 상관관계')
plt.show()

'python' 카테고리의 다른 글
| 이진 분류 (0) | 2026.05.13 |
|---|---|
| 데이터 불균형 문제 및 완화 방법 (0) | 2026.05.08 |
| 이상치 판별 및 처리 (2) | 2026.05.08 |
| 웹 크롤링 (0) | 2026.04.23 |
| 클래스(Class)란? 구성 및 상속 (0) | 2026.04.15 |