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

[Seaborn] 5. 바이올린 플롯(Violin Plot) 그리기

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

안녕하십니까?!~ 꽁냥이 입니다. 오늘은 Seaborn에서 violinplot을 이용하여 바이올린 플롯을 그리는 방법을 소개하려고 합니다.

 

- 목차 -

1. Seaborn violinplot 기본

2. Seaborn violinplot 다양한 기능


   1. Seaborn violinplot 기본

violinplot은 기본적으로 x인자 또는 y인자에 수치형 원소를 갖는 배열(리스트, Numpy array, Pandas series 등)을 넣어주게 됩니다. 이때 x인자에 넣어주면 수평 바이올린 플롯, y인자에 넣어주면 수직 바이올린 플롯을 그리게 됩니다.

 

import seaborn as sns
sns.set_theme(style='whitegrid')
tip_df = sns.load_dataset('tips')
ax = sns.violinplot(y=tip_df['total_bill']) ## 수직 바이올린 플롯
# ax = sns.violinplot(x=tip_df['total_bill']) ## 수평 바이올린 플롯

 

y 인자를 설정한 수평 바이올린 플롯(왼쪽)과 x인자를 설정한 수평 바이올린 플롯(오른쪽)(seaborn violinplot)

 

violinplot에는 색상, 테두리 두께 등 바이올린 플롯을 꾸밀 수 있는 여러 인자들이 있습니다. 아래 코드를 통해서 확인해보세요. violinplot에는 여기서 소개한 인자 외에도 여러 가지 인자들이 더 있는데요. 자세한 사항은 여기를 참고해주세요.

 

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

## 수직 바이올린 플롯
ax = sns.violinplot(y=tip_df['total_bill'],
                    width=0.5, ## 바이올린 폭
                    linewidth=3, ## 라인 두께
                    color='y', ## 색상
                    saturation=0.7 ## 채도
                   )

 


   2. Seaborn violinplot 다양한 기능

1) Pandas 데이터프레임 지원

Seaborn은 Pandas 데이터프레임 구조를 갖는 데이터의 시각화를 아주 쉽게 해 줍니다. 

 

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

 

import seaborn as sns
sns.set_theme(style='whitegrid')
tip_df = sns.load_dataset('tips')
 
## 수직 박스 플롯
ax = sns.violinplot(data=tip_df, y='total_bill')

 

이 상태에서 x인자를 추가하면 여러 개 바이올린 플롯을 그릴 수 있습니다. 꽁냥이는 일별 total_bill 바이올린 플롯을 그리는 코드를 작성했습니다. 이때 order 인자를 사용하여 바이올린 플롯을 요일 순서대로 그릴 수 있어요.

 

ax = sns.violinplot(data=tip_df, x='day', y='total_bill', 
                    order=['Sun', 'Sat', 'Fri', 'Thur'])

 


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

hue 인자를 사용하면 좀 더 세분화된 바이올린 플롯을 그릴 수 있습니다. hue 인자에 범주형 칼럼명(데이터프레임 속 칼럼 이어야 함)을 넣어주면 해당 범주에 대한 세분화된 바이올린 플롯을 그릴 수 있습니다. 이때 hue_order를 이용하면 범주의 색상 적용 순서를 바꿀 수 있어요. 그리고 split을 True로 하면 hue에서 지정한 칼럼을 대상으로 합쳐진 데이터에 대한 바이올린 플롯을 그려주고 False인 경우 각 범주별로 나누어 바이올린 플롯을 그려줍니다.

 

여기서는 추가적으로 palette인자에 컬러맵을 지정했습니다. palette에서 사용할 수 있는 컬러 맵은 여기를 참고해주세요.

 

ax = sns.violinplot(data=tip_df, x='day', y='total_bill',
                 order=['Sun', 'Sat', 'Fri', 'Thur'],
                 hue='time',
                 hue_order=['Dinner', 'Lunch'],
                 palette='cool',
                 split=True
                )

 

split=True 인 경우(왼쪽), split=False 인 경우(오른쪽)


오늘은 Seaborn을 이용하여 바이올린 플롯을 그리는 방법을 알아보았습니다. 바이올린 플롯이 은근히 많이 사용되더라고요. 그래서 알아두시면 언젠가 도움이 될 거예요.

 

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

 


댓글


맨 위로