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

[Scatterplot] Scatterplot with multiple semantics

by 에디터 윤슬 2024. 11. 8.
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style = 'whitegrid')
diamonds = sns.load_dataset('diamonds')
diamonds

 

seaborn

f, ax = plt.subplots(figsize=(6.5, 6.5))
sns.despine(f, left = True, bottom = True)
clarity_ranking = ["I1", "SI2", "SI1", "VS2", "VS1", "VVS2", "VVS1", "IF"]
sns.scatterplot(
    x = 'carat',
    y = 'price',
    hue = 'clarity',
    size = 'depth',
    palette = 'ch:r = -.2, d = .3_r',
    hue_order = clarity_ranking,
    sizes = (1, 8), linewidth = 0,
    data = diamonds,
    ax = ax
)

코드 설명

  • plt.subplots(figsize=(6.5, 6.5)): Matplotlib에서 그래프를 그릴 때 사용하는 캔버스와 **축(ax)**을 생성합니다.
    • figsize=(6.5, 6.5)는 그래프의 크기를 설정하는 파라미터로, 가로와 세로의 크기를 각각 6.5인치로 설정합니다.
    • f Figure 객체로 전체 그림을 나타내고, ax Axes 객체로 실제 그래프가 그려질 축을 의미합니다.
  • sns.despine(): Seaborn에서 제공하는 함수로, 그래프의 **축 경계선(Spines)**을 제거하는 역할을 합니다.
    • left=True: 왼쪽 축 경계선을 제거합니다.
    • bottom=True: 아래쪽 축 경계선을 제거합니다.
    • 이를 통해 그래프가 더 깔끔하게 표시됩니다.
  • clarity_ranking: 다이아몬드의 투명도(clarity) 등급을 나타내는 리스트입니다. 이 리스트는 투명도 등급을 낮은 순서에서 높은 순서로 정렬한 것입니다.
    • "I1"은 가장 낮은 투명도를 의미하고, "IF"는 가장 높은 투명도를 의미합니다.
    • 이 리스트는 나중에 산점도에서 hue_order 파라미터로 사용되어 투명도 등급이 시각적으로 구분되도록 합니다.
  • sns.scatterplot(): Seaborn의 산점도 함수로, 여러 차원의 데이터를 시각화할 수 있습니다.
    • x='carat': X축에 다이아몬드의 무게(캐럿)를 표시합니다.
    • y='price': Y축에 다이아몬드의 가격을 표시합니다.
    • hue='clarity': 점의 색상으로 다이아몬드의 투명도(clarity)를 구분합니다. 각 투명도 등급에 따라 다른 색상이 할당됩니다.
    • size='depth': 점의 크기로 다이아몬드의 깊이를 나타냅니다. 깊이가 클수록 점이 커집니다.
    • palette='ch:r=-.2,d=.3_r': 색상 팔레트를 설정합니다. 여기서 'ch:r=-.2,d=.3_r'는 색상 맵을 조정하는 파라미터입니다. 색상의 밝기와 채도를 조정하여 시각적으로 구분되도록 합니다.
    • hue_order=clarity_ranking: hue에 의해 구분되는 카테고리(투명도 등급)의 순서를 명시적으로 지정합니다. 앞서 정의한 clarity_ranking 리스트에 따라 순서가 정해집니다.
    • sizes=(1, 8): 점의 크기 범위를 설정합니다. 최소 크기는 1이고 최대 크기는 8입니다.
    • linewidth=0: 점의 외곽선 두께를 설정합니다. 여기서는 외곽선을 없애기 위해 두께를 0으로 설정했습니다.
    • data=diamonds: 시각화할 데이터셋으로, 여기서는 다이아몬드 관련 데이터셋인 diamonds를 사용하고 있습니다.
    • ax=ax: 앞서 생성한 Axes 객체(ax)에 그래프를 그립니다.
결론
  • 주어진 시각화에서 사용할 데이터를 선택할 때:
  • 캐럿(carat)과 가격(price) 간의 관계는 기본적으로 매우 유용합니다.
  • 여기에 추가적으로 투명도(clarity)와 같은 범주형 변수를 색상으로 구분하고,
  • 깊이(depth)와 같은 연속형 변수를 점 크기로 표현하면 다차원 데이터를 효과적으로 시각화할 수 있습니다.
  • 이를 통해 다이아몬드의 물리적 특성과 가격 간의 복잡한 관계를 한눈에 파악할 수 있으며, 다른 변수인 컷(cut)이나 색상(color)을 추가하면 더욱 풍부한 분석을 할 수 있습니다.