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

[Matplotlib] 2차원 히스토그램(2d Histogram) 그리기 (feat. hist2d)

by 부자 꽁냥이 2022. 8. 12.

안녕하세요~ 꽁냥이에요. 오늘은 Matplotlib의 hist2d를 이용하여 2차원 히스토그램(2d Histogram)을 그리는 방법을 소개하려고 합니다.

 

- 목차 -

1. Matplotlib hist2d 기본

2. Matplotlib hist2d 다양한 기능


   1. Matplotlib hist2d 기본

hist2d는 2차원 히스토그램이므로 당연히 x, y인자를 받아야 합니다. 참고로 Pandas 시리즈 객체를 이용한다면 그 안에 NaN가 없어야 합니다.

 

import matplotlib.pyplot as plt
import seaborn as sns

penguins_df = sns.load_dataset('penguins')
penguins_df = penguins_df.dropna() ## 결측치 제거
fig = plt.figure(figsize=(7,7))
fig.set_facecolor('white')

h = plt.hist2d(
    x=penguins_df['flipper_length_mm'], ## x축 데이터
    y=penguins_df['body_mass_g'], ## y축 데이터
)
plt.show()

 

hist2d의 기본 사용법을 알아보았는데요. 아직 뭔가 허전한 느낌이네요. 이제 hist2d의 여러 인자와 몇 가지 코드를 추가하여 좀 더 멋진 2차원 히스토그램을 그려봅시다.


   2. Matplotlib hist2d 다양한 기능

이제 좀 더 나은 2차원 히스토그램을 그려보려고 합니다. hist2d에는 2차원 히스토그램을 꾸밀 수 있는 여러 인자가 있어요. 컬러맵을 바꾸는 cmap, 구간 수 bins 등 말이죠~. 아래 코드를 통해 사용법을 확인해보세요. 

 

import matplotlib.pyplot as plt
import seaborn as sns

penguins_df = sns.load_dataset('penguins')
penguins_df = penguins_df.dropna() ## 결측치 제거
fig = plt.figure(figsize=(7,7))
fig.set_facecolor('white')

h = plt.hist2d(
    x=penguins_df['flipper_length_mm'], ## x축 데이터
    y=penguins_df['body_mass_g'], ## y축 데이터
    bins=50, ## 빈 개수
    cmap='cool', ## 컬러맵
)
cur_ax = plt.gca() ## 현재 Axes
fig.colorbar(h[3],ax=cur_ax) ## 컬러바 추가

plt.show()

 

컬러맵을 다른 것을 쓰고 싶으신 분들은 여기를 참고하셔서 cmap인자를 설정하시면 됩니다. 번외로 꽁냥이가 원하는 컬러맵을 추가해 보았어요. 

 

import matplotlib.colors as mcl

## hsv 컬러를 이용한 컬러맵 커스터마이징
h = 24
s = 0.99
v = 1
 
colors = [
    mcl.hsv_to_rgb((h/360,0,v)),
    mcl.hsv_to_rgb((h/360,0.9,v)),
    mcl.hsv_to_rgb((h/360,1,v))
]
cmap = mcl.LinearSegmentedColormap.from_list('my_cmap',colors,gamma=2)
 
fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')
 
penguins_df = sns.load_dataset('penguins')
penguins_df = penguins_df.dropna() ## 결측치 제거
fig = plt.figure(figsize=(7,7))
fig.set_facecolor('white')

h = plt.hist2d(
    x=penguins_df['flipper_length_mm'], ## x축 데이터
    y=penguins_df['body_mass_g'], ## y축 데이터
    bins=50, ## 빈 개수
    cmap=cmap, ## 컬러맵
)
cur_ax = plt.gca() ## 현재 Axes
fig.colorbar(h[3],ax=cur_ax) ## 컬러바 추가

plt.show()

 


이번 포스팅에서는 Matplotlib에서 2차원 히스토그램을 그리는 방법을 알아보았습니다. 부디 이번 포스팅이 도움이 되시길 바라며 이상 포스팅 마치겠습니다. 감사합니다~


댓글


맨 위로