Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib로 스웜 플롯(Swarm Plot) 만드는 방법

스웜 플롯(Swarm Plot)은 범주형 데이터의 개별 관측값을 서로 겹치지 않도록 배치해 분포를 한눈에 보여주는 시각화 기법입니다. Python의 MatplotlibSeaborn 라이브러리를 활용하면 손쉽게 만들 수 있으며, 박스플롯(Box Plot)과 함께 표현하면 각 데이터 포인트의 위치와 통계적 요약 정보를 동시에 확인할 수 있습니다. 다음 단계를 따라 진행해 보세요.

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
  • Pandas 데이터프레임, 즉 2차원이며 크기가 가변적인 표 형태의 데이터를 생성합니다.
  • 스웜 플롯 플로터인 swarmplot을 초기화합니다.
  • 박스플롯을 함께 그리려면 boxplot() 메서드를 사용합니다.
  • 완성된 그림을 화면에 표시하려면 show() 메서드를 호출합니다.

예제 코드

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = pd.DataFrame({"Box1": np.arange(10),
                     "Box2": np.arange(10)})

ax = sns.swarmplot(x="Box1", y="Box2", data=data, zorder=0)

sns.boxplot(x="Box1", y="Box2", data=data,
            showcaps=False, boxprops={'facecolor': 'None'},
            showfliers=False, whiskerprops={'linewidth': 0}, ax=ax)

plt.show()

코드 설명

위 코드에서는 먼저 np.arange(10)으로 0부터 9까지의 값을 가진 두 개의 열(Box1, Box2)을 포함하는 Pandas 데이터프레임을 생성합니다. 이후 sns.swarmplot()으로 개별 데이터 포인트를 배치하고, zorder=0을 지정해 스웜 플롯이 박스플롯 아래에 위치하도록 합니다.

이어지는 sns.boxplot()에서는 showcaps=False, showfliers=False 등의 옵션과 투명한 면(facecolor: 'None') 설정을 사용해 박스플롯의 윤곽선만 남기고, 두 그래프가 자연스럽게 겹쳐 보이도록 구성했습니다. 마지막으로 plt.show()를 호출하면 결과가 화면에 출력됩니다.

실행 결과

Matplotlib로 스웜 플롯(Swarm Plot) 만드는 방법Matplotlib로 스웜 플롯(Swarm Plot) 만드는 방법