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

Matplotlib에서 Seaborn 산점도의 범례를 그래프 밖으로 이동하는 방법

Seaborn 산점도(scatterplot)를 그릴 때 범례(legend)가 기본적으로 그래프 내부에 표시되어 데이터 영역을 가리는 경우가 있습니다. 이럴 때 bbox_to_anchor 옵션을 활용하면 범례를 그래프 바깥쪽으로 손쉽게 이동할 수 있습니다.

범례를 외부로 이동하는 단계

  • 그림(figure) 크기를 설정하고 서브플롯 간의 여백(padding)을 조정합니다.
  • 세 개의 열(col1, col2, col3)을 가진 Pandas 데이터프레임을 생성합니다.
  • 여러 의미적 그룹화(semantic grouping)가 가능한 산점도를 그립니다.
  • 범례를 플롯 외부에 배치하기 위해 legend() 메서드에서 bbox_to_anchor 파라미터를 사용합니다.
  • 그래프를 화면에 표시하려면 show() 메서드를 호출합니다.

예제 코드

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

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

df = pd.DataFrame(dict(col1=[2, 1, 4],
                       col2=[5, 2, 1],
                       col3=[4, 0, 1]))

sns.scatterplot(data=df)

plt.legend(bbox_to_anchor=(1.25, 1), borderaxespad=0)

plt.show()

코드 설명

bbox_to_anchor=(1.25, 1)는 범례의 앵커 위치를 지정하는 값입니다. x축 값이 1보다 크기 때문에 범례가 그래프 영역 오른쪽 바깥으로 배치됩니다. y값이 1이므로 상단에 정렬됩니다. 또한 borderaxespad=0을 설정하여 축과 범례 사이의 여백을 제거할 수 있습니다.

만약 범례를 아래쪽으로 이동하고 싶다면 bbox_to_anchor=(0.5, -0.15)처럼 y값을 음수로 설정하고 ncol 파라미터로 항목 수를 조절하면 됩니다.

출력 결과

Matplotlib에서 Seaborn 산점도의 범례를 그래프 밖으로 이동하는 방법