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

[Seaborn] 6. 히스토그램(Histogram) 그리기 (feat. histplot)

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

안녕하세요~ 꽁냥이에요. 오늘은 Seaborn의 histplot을 이용하여 히스토그램을 그리는 방법을 알아보려고 합니다.

 

- 목차 -

1. Seaborn histplot 기본

2. Seaborn histplot 다양한 기능

 

Matplotlib을 이용한 히스토그램을 그리는 방법은 아래 포스팅을 참고해주세요~

 

[히스토그램(Histogram)] 1. Matplotlib을 이용하여 히스토그램 그리기.

 

[히스토그램(Histogram)] 1. Matplotlib을 이용하여 히스토그램 그리기.

안녕하세요~ 꽁냥이에요. 히스토그램(Histogram)은 수치형 데이터의 분포를 시각적으로 표현해주는 고마운 친구인데요. 이번 포스팅에서는 Matplotlib을 이용하여 히스토그램을 그려보는 방법에 대

zephyrus1111.tistory.com

[히스토그램(Histogram)] 2. Matplotlib을 이용하여 히스토그램 여러 개 그리기.

 

[히스토그램(Histogram)] 2. Matplotlib을 이용하여 히스토그램 여러개 그리기.

안녕하세요~ 꽁냥이에요. 이번 포스팅에서는 Matplotlib을 이용하여 히스토그램을 여러개 그려보는 방법에 대해서 알아보겠습니다. 히스토그램을 그리는 기본적인 방법과 꾸미는 방법은 여기를

zephyrus1111.tistory.com


   1. Seaborn histplot 기본

histplot은 기본적으로 x인자 또는 y인자 속에 숫자형 원소를 갖는 배열을 넣어줍니다. 이때 x인자를 사용하면 수직 히스토그램, y인자를 사용하면 수평 히스토그램이 그려집니다.

 

import seaborn as sns
sns.set_theme(style='whitegrid')
tip_df = sns.load_dataset('tips')
ax = sns.histplot(x=tip_df['total_bill']) ## 수직 히스토그램
# ax = sns.histplot(y=tip_df['total_bill']) ## 수평 히스토그램

 

x인자를 설정한 경우 수직 히스토그램(왼쪽), y인자를 설정한 경우 수평 히스토그램(오른쪽)

이 외에도 히스토그램 색상, bins, 밀도 함수 곡선 추가 여부 등 여러 가지 인자를 설정할 수 있습니다. 아래 코드를 통해 그 사용법을 살펴보세요. histplot 인자에 대한 더 자세한 내용은 여기를 참고해주세요. 

 

import seaborn as sns
sns.set_theme(style='whitegrid')
tip_df = sns.load_dataset('tips')

## 수직 히스토그램
ax = sns.histplot(x=tip_df['total_bill'],
                  color='r', ## 색상
                  bins=10, ## bin 개수
                  kde=True, ## 밀도 함수 곡선 추가
                  element='step', ## 히스토그램 표시형식,
                  stat='percent', ## y값 계산 방식 count
                  cumulative=False, ## True인 경우 누적 분포 형태로 그림
                 )

 


   2. Seaborn histplot 다양한 기능

2) Pandas 데이터프레임 지원

Seaborn은 Pandas 데이터프레임 형식의 데이터를 시각화하는데 아주 특화되어있습니다.

 

histplot의 data 인자에 데이터프레임을 넣고 x(또는 y) 인자에 칼럼명을 지정해야합니다. 주의해야할 점은 칼럼명은 반드시 데이터프레임 속에 있어야 한다는 것입니다.

 

import seaborn as sns
sns.set_theme(style='whitegrid')
tip_df = sns.load_dataset('tips')

ax = sns.histplot(data=tip_df, x='total_bill') ## 수직 히스토그램

 


2) 범주를 색상으로 표현(hue, hue_order)

hue인자를 통해 좀 더 세분화된 범주로 히스토그램을 그릴 수 있습니다. hue 인자에 범주형 칼럼명을 넣어주기만 하면 됩니다. 이때 hue_order를 이용하면 범주의 색상 적용 순서를 바꿀 수 있습니다. 

 

추가적으로 palette 인자에 colormap을 지정했습니다. palette에 사용할 수 있는 컬러 맵이 어떤 것들이 있는지 궁금하신 분들은 여기를 참고해주세요.

## 수직 히스토그램
ax = sns.histplot(data=tip_df, x='total_bill',
                  hue='time',
                  hue_order=['Dinner', 'Lunch'],
                  palette='cool' ## 컬러맵 지정
                 )

 

또한 범주별로 여러 개 히스토그램을 그릴 때 multiple 인자를 이용하여 여러 히스토그램을 그리는 방식을 고를 수 있습니다. 아래 코드를 실행하여 multiple 인자에 들어가는 값에 따라 어떻게 그려지는지 살펴보세요.

 

import matplotlib.pyplot as plt

fig, ax = plt.subplots(2,2)
fig.set_size_inches((8,8))
multiple_list = ['layer', 'dodge', 'stack', 'fill']
for i in range(4):
    row = i//2
    col = i%2
    cur_ax = ax[row, col]
    sns.histplot(data=tip_df, x='total_bill',
                      hue='time',
                      hue_order=['Dinner', 'Lunch'],
                      palette='cool', ## 컬러맵 지정
                      multiple=multiple_list[i], ## 여러 히스토그램 그리는 방식
                      ax=cur_ax,
                     ) 
    cur_ax.set_title(multiple_list[i])
plt.tight_layout()

 


오늘은 Seaborn에서 히스토그램을 그리는 방법에 대해서 알아보았는데요. 히스토그램은 실제로 데이터 분석 시 많이 활용되므로 오늘 배운 내용을 알아두시면 요긴하게 사용할 수 있을 거예요. 다음에도 좋은 주제로 찾아뵐 것을 약속드리며 이상 포스팅 마치겠습니다.

 


댓글


맨 위로