co-code 님의 블로그

matplotlib을 이용한 시각화 본문

python

matplotlib을 이용한 시각화

co-code 2026. 4. 29. 19:00

시작하기 앞서 라이브러리를 설치 및 로드하자.

#필요 라이브러리 설치
!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()

특정 막대만 hex코드 이용하여 변경

  • 산점도 그래프
    •  데이터의 분포도를 확인하기 위한 그래프(데이터의 상관관계를 확인)
#랜덤 데이터 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