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

Matplotlib로 Seaborn FacetGrid 플롯에 범례 추가하는 방법

Seaborn의 FacetGrid는 조건부 관계를 시각화하기 위한 멀티 플롯 그리드입니다. 각 패널(서브플롯)마다 개별 범례를 넣는 대신 add_legend() 메서드를 활용하면 전체 그림에 하나의 통합된 범례를 손쉽게 추가할 수 있습니다. 아래에서 단계별 절차와 예제 코드를 살펴보겠습니다.

단계별 방법

  • 그림 크기 설정: figure 크기를 지정하고 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
  • 데이터프레임 생성: col1 열을 포함하는 pandas 데이터프레임을 만듭니다.
  • FacetGrid 구성: 조건부 관계를 시각화하기 위한 멀티 플롯 그리드를 생성합니다. col 매개변수로 열 방향 분할 기준을, hue 매개변수로 색상 구분 기준을 지정합니다.
  • map_dataframe() 사용: 이 메서드는 'data' 키워드 인자로 long-form DataFrame을 받아 문자열 변수 이름으로 해당 DataFrame의 데이터에 접근하는 함수와 함께 플로팅할 때 특히 적합합니다.
  • 범례 추가: add_legend()를 호출하여 그림에 범례를 추가합니다.
  • 그림 표시: matplotlib의 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]})

g = sns.FacetGrid(df, col="col1", hue="col1")
g.map_dataframe(sns.scatterplot)
g.set_axis_labels("X", "Y")
g.add_legend()

plt.show()

실행 결과

Matplotlib로 Seaborn FacetGrid 플롯에 범례 추가하는 방법

위 코드를 실행하면 col1 값(3, 7, 8)을 기준으로 세 개의 패널이 가로 방향으로 나뉘어 생성되며, 각 패널에는 해당 값에 대응하는 산점도가 그려집니다. 또한 hue="col1" 설정 덕분에 오른쪽에 색상 기준으로 구성된 범례가 함께 표시되어, 어떤 색상이 어떤 데이터 값을 의미하는지 한눈에 파악할 수 있습니다.