데이터 분석에서 범주형 변수와 연속형 변수 간의 관계를 파악하는 것은 매우 중요합니다. 이번 글에서는 파이썬의 Seaborn 라이브러리에서 제공하는 factorplot 함수를 활용해 바이올린 플롯(Violin Plot)을 그리는 방법을 알아보겠습니다.
범주형 데이터 시각화의 기본 개념
막대그래프(barplot)는 범주형 변수와 연속형 변수 사이의 관계를 나타내는 대표적인 방법입니다. 데이터는 직사각형 막대 형태로 표현되며, 막대의 길이는 해당 범주에 속한 데이터의 비율을 의미합니다.
포인트 플롯(pointplot)도 막대그래프와 유사하지만, 막대를 채우는 대신 특정 축 위의 한 점으로 데이터의 추정값을 표시한다는 차이가 있습니다.
범주형 데이터는 범주형 산점도(categorical scatter plot)나 pointplot 같은 개별 플롯으로 시각화할 수 있으며, 이보다 더 상위 수준의 함수인 factorplot을 사용하면 더욱 편리하게 처리할 수 있습니다.
factorplot 함수란?
factorplot 함수는 FacetGrid 위에 범주형 플롯을 그리는 기능을 하며, 'kind' 매개변수를 통해 원하는 플롯의 종류를 지정할 수 있습니다.
바이올린 플롯을 그리고 싶다면 'kind' 매개변수에 'violin' 값을 전달하면 됩니다. 참고로 FacetGrid는 기본적으로 pointplot을 사용합니다.
예제 코드
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
my_df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = "pulse", hue = "kind", kind = 'violin',data = my_df);
plt.show()실행 결과

코드 설명
- 필요한 패키지들(pandas, seaborn, matplotlib)을 임포트합니다.
- 입력 데이터는 seaborn 라이브러리에서 제공하는 'exercise' 데이터셋입니다.
load_dataset함수를 사용해 해당 데이터를 불러옵니다.- 불러온 데이터는 데이터프레임(my_df)에 저장됩니다.
factorplot함수에 데이터프레임을 매개변수로 전달해 데이터를 시각화합니다.- x축에는 'time', y축에는 'pulse' 값을 지정하고, 'kind' 매개변수를 'hue'로 구분하여 'violin'으로 설정합니다.
- 최종적으로 생성된 그래프가 화면에 출력됩니다.
이처럼 factorplot 함수 하나만으로 복잡한 설정 없이 다양한 종류의 범주형 플롯을 손쉽게 그릴 수 있습니다. 바이올린 플롯은 박스플롯과 커널 밀도 추정(KDE)을 결합한 형태로, 데이터의 분포를 더욱 직관적으로 보여주는 장점이 있습니다.