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()
실행 결과

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