안녕하세요~ 꽁냥이에요. 이번 포스팅은 Seaborn에서 swarmplot을 이용하여 Swarm Plot 그리는 방법을 소개하려고 합니다.
- 목차 -
1. Seaborn swarmplot 기본
swarmplot은 기본적으로 x인자 또는 y인자에 수치형 원소를 갖는 배열(리스트, 튜플, Pandas 시리즈 등)을 넣어주게 됩니다. 이때 x인자에 넣어주면 수평, y인자에 넣어주면 수직으로 Swarm Plot을 그리게 됩니다.
import seaborn as sns
sns.set_theme(style='whitegrid')
tip_df = sns.load_dataset('tips')
sns.swarmplot(x=tip_df['total_bill']) ## 수평 Swarm Plot
# sns.swarmplot(y=tip_df['total_bill']) ## 수직 Swarm Plot
swarmplot에는 색상, 마커 모양 등 Swarm Plot을 꾸밀 수 있는 인자를 많이 제공하고 있어요. 아래 코드를 통해서 확인해보세요. swarmplot에 더 많은 인자를 알고 싶다면 여기를 참고해주세요.
import seaborn as sns
sns.set_theme(style='whitegrid')
tip_df = sns.load_dataset('tips')
## 수직 Strip Plot
sns.swarmplot(y=tip_df['total_bill'],
color='red', ## 마커 색상
size=7, ## 마커 사이즈
marker='*' ## 마커 모양
)
2. Seaborn swarmplot 다양한 기능
1) Pandas 데이터프레임 지원
Seaborn 은 Pandas 데이터프레임 형식의 시각화를 아주 쉽게 할 수 있습니다.
swarmplot의 data인자에 주어진 데이터프레임을 넣고 x(또는 y) 인자에 칼럼명을 지정합니다. 이때 칼럼명은 데이터프레임의 칼럼에서 정의되어 있어야 합니다.
import seaborn as sns
sns.set_theme(style='whitegrid')
tip_df = sns.load_dataset('tips')
## 수직 Swarm Plot
ax = sns.swarmplot(data=tip_df, y='total_bill')
여기에 x인자를 추가하면 여러 개 Swarm Plot을 그릴 수 있습니다. 아래 코드는 일별 total_bill에 대한 Swarm Plot을 그린 것입니다. 이때 Order 인자를 사용하여 요일 순서를 바꿀 수 있습니다.
ax = sns.swarmplot(data=tip_df, x='day', y='total_bill',
order=['Sun', 'Sat', 'Fri', 'Thur'])
2) 범주를 색상으로 표현(hue, hue_order)
Seaborn은 여기에서 그치지 않고 추가 범주형 변수를 이용하여 더 세분화된 Swarm Plot을 그릴 수 있는 인자가 있는데 바로 hue입니다. hue 인자에 범주형 칼럼명(데이터프레임 속 칼럼 이어야 함)을 넣어주면 해당 범주에 대한 세분화된 Swarm Plot을 그릴 수 있습니다. 이때 hue_order를 이용하면 범주의 색상 적용 순서를 원하는대로 바꿀 수 있어요. 그리고dodge을 True로 하면 hue에서 지정한 칼럼을 대상으로 점들을 한 곳에 모아 Swarm Plot을 그려주고 False인 경우 분리해서 Swarm Plot을 그려줍니다.
여기서는 추가적으로 palette인자에 컬러맵을 지정했습니다. palette에서 사용할 수 있는 컬러 맵은 여기를 참고해주세요.
ax = sns.swarmplot(data=tip_df, x='day', y='total_bill',
order=['Sun', 'Sat', 'Fri', 'Thur'],
hue='time',
hue_order=['Dinner', 'Lunch'],
palette='cool',
dodge=False, ## 점을 섞어서 표현 True 분리해서 표현
)
이번 포스팅에서는 Seaborn을 이용하여 Swarm Plot을 그리는 방법에 대해서 알아보았습니다. 사실 꽁냥이는 Swarm Plot을 이번에 Strip Plot(Jitter Plot) 준비하면서 처음 알았어요. 근데 보니까 특정 상황에서는 쓸만해 보여서 이렇게 포스팅으로 공유드렸어요. 부디 도움이 되시길 바라면 이상 포스팅 마치겠습니다. 감사합니다.
'데이터 분석 > 시각화' 카테고리의 다른 글
[Seaborn] 11. 카테고리(범주, Category) 변수 시각화하기 (feat. catplot) (0) | 2022.08.13 |
---|---|
[Seaborn] 10. 산점도와 회귀 직선을 동시에 그리기 (feat. lmplot) (0) | 2022.08.13 |
[Seaborn] 8. Strip Plot(Jitter Plot) 그리기 (feat. stripplot) (0) | 2022.08.12 |
[Seaborn] 7. 2차원 히스토그램(2d Histogram) 그리기 (feat. histplot) (0) | 2022.08.12 |
[Matplotlib] 2차원 히스토그램(2d Histogram) 그리기 (feat. hist2d) (0) | 2022.08.12 |
댓글