본문 바로가기
데이터 분석/시각화

[히트 맵(Heat Map)] 1. 히트 맵 그리기 - 기본

by 부자 꽁냥이 2021. 4. 21.

안녕하세요~ 꽁냥이에요. 이번 포스팅에서는 2차원 데이터를 시각화하는데 heat map이라는 것이 있습니다. 여기서 2차원 데이터란 2개의 범주에 대응하는 숫자값을 나타내는 데이터를 말합니다. Heat map은 2차원 데이터 안에 대응하는 숫자값을 단순히 보여주는 것 뿐만 아니라 색상의 진한 정도 또는 옅은 정도를 이용하여 숫자값을 눈으로 비교하기 쉽게해준다는 장점이 있지요.

 

따라서 이번 포스팅에서는 Heat map을 그리는 기본적인 방법에 대해서 알아보겠습니다. 여기서 다루는 내용은 다음과 같습니다.

 

1. Matplotlib을 이용하여  Heatmap 그리기

2. Seaborn을 이용하여 Heatmap 그리기


   1. Matplotlib을 이용하여  Heatmap 그리기

먼저 필요한 모듈을 임포트해주세요.

 

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

 

먼저 이번 포스팅에서 사용할 데이터를 만들어줍니다. 꽁냥이는 20개 행과 10개 열을 갖는 2차원 데이터를 만들어 줄거에요. 각 셀값에는 정규분포 난수를 넣어주고요.

 

columns = ['X' + str(x).zfill(2) for x in range(10)]

data = {}
for k in columns:
    data[k] = [0]*20

map_df = pd.DataFrame(data)
map_df.index = ['Y' + str(x).zfill(2) for x in range(20)]

for i in range(map_df.shape[0]):
    for j in range(map_df.shape[1]):
        map_df.iloc[i,j] = np.random.randn(1)

 

Matplotlib에서는 pcolor 함수를 이용하여 Heat map을 그릴 수 있어요. pcolor에는 2차원 numpy.array 또는 pandas.DataFrame을 인자로 넣어주시면 됩니다. 또한 컬러바를 표시하기 위하여 colorbar를 사용합니다. Heat map에서는 pcolor와 colorbar는 한 세트에요 ㅎㅎ. 아래 코드를 살펴볼게요.

 

fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')

plt.pcolor(map_df.values)
plt.xticks(range(len(map_df.columns)),map_df.columns) ## x축 눈금 생성
plt.yticks(range(len(map_df.index)), map_df.index) ## y축 눈금 생성

plt.colorbar()
plt.show()

 

line 3

pcolor함수에 앞서 만들어둔 데이터프레임을 넣어줍니다.

 

line 8

Heat Map에 컬러바를 표시해줍니다.

 

위 코드를 실행하면 아래와 같이 Heat Map이 그려진 것을 확인할 수 있어요.

 


   2. Seaborn을 이용하여 Heatmap 그리기

이번엔 Seaborn을 이용해보겠습니다. 방법은 Matplotlib을 이용했던 것보다 훨씬 간편합니다. 그냥 heatmap 함수에 2차원 numpy.array 또는 pandas.DataFrame을 인자로 넣어주시면 됩니다. 아래 코드를 실행해보세요.

 

fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')

sns.heatmap(map_df)

plt.show()

 

 

Seaborn에서 그려주는 Heat map의 색상이 Matplotlib과 다르네요.


이번 포스팅에서는 Heat map을 그려주는 아주 기초적인 내용을 알아보았습니다. 기초적인 내용이라서 위에서 본 Heat map은 2% 부족해보이는데요. 다음 포스팅에서는 부족한 2%를 채워주기 위하여 Heat map을 꾸며보는 방법에 대해서 소개하겠습니다.

 

지금까지 꽁냥이 글 읽어주셔서 감사합니다. 안녕히 계세요.

 

 

참고자료 

히트맵을 그리는 방법을 자세히 설명한 블로그 - rfriend.tistory.com/419

seaborn 개발 문서 - seaborn.pydata.org/generated/seaborn.heatmap.html


댓글


맨 위로