본문 바로가기
[업무 지식]/Seaborn

[boxplot] Horizontal boxplot with observations

by 에디터 윤슬 2024. 11. 9.
import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style="ticks")

# Load the example planets dataset
planets = sns.load_dataset("planets")
planets

 

데이터셋 설명

  • planets 데이터셋은 외계 행성을 탐지한 다양한 방법과 그 결과를 포함하고 있습니다. 주요 변수는 다음과 같습니다:
    • distance: 지구에서 해당 외계 행성까지의 거리 (단위: 파섹).
    • method: 외계 행성을 발견한 탐지 방법 (예: Transit, Radial Velocity 등).
    • 그 외에도 궤도 주기(period), 질량(mass) 등의 변수가 포함되어 있습니다.
  • 시각화에서는 탐지 방법(method)에 따른 행성 거리(distance) 분포를 나타내고 있습니다.

seaborn

# Initialize the figure with a logarithmic x axis
f, ax = plt.subplots(figsize=(7, 6))
ax.set_xscale("log")

# Plot the orbital period with horizontal boxes
sns.boxplot(
    planets, 
    x="distance", 
    y="method", 
    hue="method",
    whis=[0, 100], 
    width=.6, 
    palette="vlag"
)

# Add in points to show each observation
sns.stripplot(planets, x="distance", y="method", size=4, color=".3")

# Tweak the visual presentation
ax.xaxis.grid(True)
ax.set(ylabel="")
sns.despine(trim=True, left=True)

코드 설명

  1. 로그 스케일 설정:
    • ax.set_xscale("log"): 이 코드는 x축을 로그 스케일로 변환합니다. 로그 스케일은 값의 범위가 매우 클 때 작은 값과 큰 값을 동시에 효과적으로 표현할 수 있도록 도와줍니다. 여기서는 행성의 **거리(distance)**가 매우 큰 범위로 분포되어 있으므로 이를 로그 스케일로 변환하여 시각화합니다.
  2. 데이터셋:
    • sns.load_dataset("planets"): Seaborn에서 제공하는 planets 데이터셋을 불러옵니다. 이 데이터셋은 다양한 행성 탐지 방법(method)에 따라 발견된 외계 행성들의 정보(예: 거리(distance), 궤도 주기(period) 등)를 포함하고 있습니다.
  3. 상자 그림(Boxplot):
    • sns.boxplot(): 상자 그림은 데이터의 분포를 시각화하는 데 사용됩니다. 여기서는 각 탐지 방법에 따라 행성의 거리 분포를 나타냅니다.
      • x="distance": 행성까지의 거리를 x축에 표시합니다.
      • y="method": 행성을 탐지한 방법을 y축에 표시합니다.
      • hue="method": 탐지 방법별로 색상을 구분합니다.
      • whis=[0, 100]: 상자 그림에서 모든 데이터를 포함하도록 설정합니다 (이상치도 포함).
      • palette="vlag": 파란색과 빨간색 계열의 색상 팔레트를 사용합니다.
  4. 스트립 플롯(Stripplot):
    • sns.stripplot(): 각 개별 데이터를 점으로 표시하여 상자 그림 위에 겹쳐서 시각화합니다.
      • size=4: 점 크기를 설정합니다.
      • color=".3": 점의 색상을 회색으로 설정하여 상자 그림과 잘 구분되도록 합니다.
  5. 시각적 조정:
    • ax.xaxis.grid(True): x축에 그리드를 추가하여 값을 쉽게 읽을 수 있도록 합니다.
    • ax.set(ylabel=""): y축 레이블을 제거하여 깔끔한 디자인을 유지합니다.
    • sns.despine(trim=True, left=True): 그래프의 왼쪽 테두리를 제거하고 여백을 최소화하여 깔끔하게 만듭니다.

 

시각화 적용 사례

  1. 천문학 연구:
    • 천문학자들은 다양한 탐지 방법을 통해 발견된 외계 행성들의 거리를 비교할 수 있습니다. 예를 들어, 특정 탐지 방법(예: Transit)이 다른 방법보다 더 먼 거리에 있는 행성을 많이 발견하는지 확인할 수 있습니다.
  2. 탐사 전략 분석:
    • 우주 탐사 기관에서는 어떤 탐사 기법이 더 효과적으로 외계 행성을 발견하는지를 분석할 수 있습니다. 이를 통해 향후 우주 망원경이나 탐사 장비 설계에 반영할 수 있습니다.
  3. 데이터 과학 교육:
    • 로그 스케일 및 상자 그림과 같은 통계적 시각화를 학습하는 데 사용할 수 있으며, 복잡한 데이터를 어떻게 효과적으로 표현할 수 있는지를 보여주는 좋은 예시입니다.