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

[jointplot] Hexbin plot with marginal distributions

by 에디터 윤슬 2024. 11. 9.
import numpy as np
import seaborn as sns
sns.set_theme(style="ticks")

rs = np.random.RandomState(11)
x = rs.gamma(2, size=1000)
y = -.5 * x + rs.normal(size=1000)

 

seaborn

sns.jointplot(x=x, 
              y=y, 
              kind="hex", 
              color="#4CB391")

설명

  • rs = np.random.RandomState(11): 난수 생성을 위한 시드(seed)를 설정합니다. RandomState(11)은 재현 가능한 난수를 생성하기 위해 사용됩니다. 동일한 시드 값을 사용하면 동일한 난수 생성 결과를 얻을 수 있습니다.
  • x = rs.gamma(2, size=1000): 감마 분포에서 샘플을 생성합니다.
    • shape=2: 감마 분포의 모양 매개변수입니다.
    • size=1000: 1000개의 샘플을 생성합니다. 즉, x는 감마 분포에서 추출된 1000개의 값으로 구성됩니다.
  • y = -.5 * x + rs.normal(size=1000): y x와 음의 선형 관계를 가지도록 설정되었습니다.
    • -.5 * x: x와 음의 선형 관계를 형성하는 부분입니다. 즉, x가 증가할수록 y는 감소하는 경향을 보입니다.
    • rs.normal(size=1000): 정규 분포에서 잡음을 추가하여 더 자연스러운 데이터로 만듭니다. 이로 인해 완벽한 선형 관계가 아니라 약간의 변동이 포함됩니다.
  • sns.jointplot(): 두 변수 간의 관계를 시각화하는 함수입니다.
    • x=x, y=y: X축과 Y축에 사용할 데이터를 지정합니다. 여기서는 X축에 감마 분포에서 추출된 값(x), Y축에 그 값과 음의 선형 관계를 가진 값(y)이 표시됩니다.
    • kind="hex": 육각형(bin)에 데이터를 그룹화하여 밀도를 시각화하는 히스토그램을 그립니다. 육각형 히스토그램(hexbin plot)은 데이터가 밀집된 영역에서 더 진한 색상으로 표시되며, 데이터가 적은 영역에서는 더 연한 색상으로 표시됩니다.
    • color="#4CB391": 그래프의 색상을 설정합니다. 여기서는 녹색 계열(#4CB391)을 사용했습니다.

실제 사례 적용

  • 1. 금융 포트폴리오 리스크 관리
    • 투자자가 여러 자산 간 음의 상관성을 분석하여 리스크 관리 전략을 세울 때 이 시각화를 사용할 수 있습니다.
      • 예를 들어, 주식 A와 주식 B가 서로 음의 상관 관계에 있다면, 한 주식이 하락할 때 다른 주식이 상승하여 리스크가 줄어드는 효과를 기대할 수 있습니다.
  • 2. 마케팅 캠페인 성과 분석
    • 마케팅 담당자가 광고비 지출과 고객 이탈률 간 음의 관계를 파악하고자 할 때 이 시각화를 사용할 수 있습니다.
      • 광고비 지출이 증가함에 따라 고객 이탈률이 감소하는 패턴을 확인하고 이를 바탕으로 광고 전략을 최적화할 수 있습니다.
  • 3. 헬스케어 데이터 분석
    • 헬스케어 전문가가 운동량과 체중 감소 간 음의 상관성을 분석하여 환자의 건강 상태 변화를 추적하고 맞춤형 운동 계획을 세울 때 유용하게 사용할 수 있습니다.