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

Seaborn FacetGrid로 주석(Annotation) 사용자 정의하는 방법

데이터 시각화에서 조건부 관계를 효과적으로 보여주려면 각 서브플롯에 적절한 제목과 주석을 설정하는 것이 중요합니다. 이 글에서는 Seaborn의 FacetGrid를 활용해 그리드별 주석과 제목을 사용자 정의하는 방법을 단계별로 알아보겠습니다.

구현 단계

  • 그림 크기를 설정하고 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  • col1col2 두 개의 열을 가진 데이터프레임을 생성합니다.
  • 조건부 관계를 시각화하기 위한 멀티 플롯 그리드(FacetGrid)를 만듭니다.
  • 각 facet(면)의 데이터 하위 집합에 플로팅 함수를 적용합니다.
  • 각 그리드의 제목을 설정합니다.
  • show() 메서드를 사용해 그림을 화면에 표시합니다.

예제 코드

import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt

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

df = pd.DataFrame({'col1': [3, 7, 8, 1], 'col2': ["three", "seven", "one", "zero"]})
g = sns.FacetGrid(data=df, col='col2', height=3.5)
g.map(plt.hist, 'col1', color='red', lw=0)
g.set_titles('{col_name}')

plt.show()

코드 설명

먼저 plt.rcParams를 통해 전체 그림 크기를 7.50 x 3.50으로 지정하고, autolayout 옵션을 활성화해 요소들이 자동으로 잘 배치되도록 합니다.

다음으로 숫자 값과 문자열 값을 가진 데이터프레임을 생성한 뒤, sns.FacetGrid()col='col2' 인자를 전달하여 col2의 고유값(three, seven, one, zero)별로 열 방향 그리드를 구성합니다.

g.map() 메서드는 각 facet에 해당하는 데이터 하위 집합에 히스토그램(plt.hist)을 그려주며, 막대 색상은 빨간색으로 지정했습니다.

마지막으로 g.set_titles('{col_name}')을 호출하면 각 그리드의 제목이 해당 열의 이름으로 자동 설정됩니다. 이처럼 {col_name}, {row_name} 같은 템플릿 변수를 활용하면 주석과 제목을 유연하게 사용자 정의할 수 있습니다.

실행 결과

위 코드를 실행하면 col2의 각 카테고리별로 히스토그램이 나란히 배치된 그림이 출력되며, 각 서브플롯 상단에는 해당 카테고리 이름이 제목으로 표시됩니다.