bbox_to_anchor 매개변수를 사용하여 Matplotlib 및 Seaborn에서 플롯 외부에 범례 배치
Matplotlib, Seaborn을 사용하여 플롯 외부에 범례를 배치하는 방법 (Python)
다음은 matplotlib 및 seaborn에서 범례를 플롯 외부로 배치하는 두 가지 일반적인 방법입니다.
loc 매개변수 사용:
matplotlib의 legend()
함수는 loc
키워드 인수를 사용하여 범례의 위치를 명시적으로 지정할 수 있습니다. 다음은 범례를 오른쪽 상단 외부에 배치하는 예제입니다.
import matplotlib.pyplot as plt
import seaborn as sns
# 데이터 생성
data = sns.load_dataset('tips')
# 그래프 생성
sns.barplot(x = "day", y = "tip", data=data)
# 범례 위치 설정
plt.legend(loc='upper right', bbox_to_anchor=(1.35, 1))
# 그래프 표시
plt.show()
bbox_to_anchor
키워드 인수를 사용하면 범례의 정확한 위치를 더욱 세밀하게 제어할 수 있습니다.
이 매개변수는 (x, y)
튜플 형식으로 값을 받으며, 범례의 왼쪽 상단 모서리가 플롯의 해당 지점에 배치되도록 합니다.
다음은 범례를 오른쪽 아래 외부에 배치하는 예제입니다.
import matplotlib.pyplot as plt
import seaborn as sns
# 데이터 생성
data = sns.load_dataset('tips')
# 그래프 생성
sns.barplot(x = "day", y = "tip", data=data)
# 범례 위치 설정
plt.legend(bbox_to_anchor=(1.05, -0.1))
# 그래프 표시
plt.show()
Seaborn 기반 범례 설정:
Seaborn은 기본적으로 matplotlib 범례 기능을 활용합니다. 따라서 위에서 설명한 loc
및 bbox_to_anchor
키워드 인수를 사용하여 범례를 배치할 수 있습니다.
import seaborn as sns
# 데이터 생성
data = sns.load_dataset('tips')
# 그래프 생성
sns.barplot(x = "day", y = "tip", data=data)
# 범례 위치 설정 (위와 동일)
plt.legend(loc='upper right', bbox_to_anchor=(1.35, 1))
# 그래프 표시
plt.show()
참고:
- 범례를 배치할 때 플롯 영역과 충돌하지 않도록 주의해야 합니다.
- 범례의 위치를 조정하면 그래프의 전체적인 레이아웃 및 가독성에 영향을 미칠 수 있으므로 신중하게 선택해야 합니다.
이 외에도 범례를 플롯 외부에 배치하는 다른 방법들이 있습니다.
특정 상황에 맞는 최적의 방법을 선택하려면 Matplotlib 및 Seaborn 문서를 참고하십시오.
예제 코드: Matplotlib 및 Seaborn을 사용하여 플롯 외부에 범례 배치
예제 1: loc 매개변수 사용
import matplotlib.pyplot as plt
import seaborn as sns
# 데이터 생성
data = sns.load_dataset('tips')
# 그래프 생성
sns.barplot(x = "day", y = "tip", data=data)
# 범례를 오른쪽 상단 외부에 배치
plt.legend(loc='upper right', bbox_to_anchor=(1.35, 1))
# 그래프 표시
plt.show()
설명:
- 이 코드는
sns.load_dataset()
함수를 사용하여 'tips' 데이터 세트를 로드합니다. sns.barplot()
함수를 사용하여 "day" 열을 기준으로 "tip" 열의 값을 막대 그래프로 시각화합니다.plt.legend()
함수를 사용하여 범례를 생성하고loc
키워드 인수를 'upper right'로 설정하여 범례를 오른쪽 상단에 배치합니다.bbox_to_anchor
키워드 인수를 사용하여 범례의 정확한 위치를 조정합니다.
예제 2: bbox_to_anchor 매개변수 사용
import matplotlib.pyplot as plt
import seaborn as sns
# 데이터 생성
data = sns.load_dataset('tips')
# 그래프 생성
sns.barplot(x = "day", y = "tip", data=data)
# 범례를 오른쪽 아래 외부에 배치
plt.legend(bbox_to_anchor=(1.05, -0.1))
# 그래프 표시
plt.show()
- 이 코드는 예제 1과 동일한 데이터 세트와 그래프를 생성합니다.
plt.legend()
함수에서bbox_to_anchor
키워드 인수를 사용하여 범례를 오른쪽 아래 외부에 배치합니다.- 튜플
(1.05, -0.1)
은 범례의 왼쪽 상단 모서리가 플롯의 오른쪽 아래 모서리에서 0.05 범위 밖에 위치하도록 합니다.
추가 예제:
- 다양한 범례 위치를 시도하고
loc
및bbox_to_anchor
매개변수의 작동 방식을 확인하십시오. - 범례의 스타일을 추가로 사용자 정의하려면
legend()
함수의 다른 키워드 인수를 탐색하십시오.
Matplotlib 및 Seaborn을 사용하여 플롯 외부에 범례를 배치하는 대체 방법
ax.add_artist
함수를 사용하여 범례를 별도의 아티스트로 추가한 다음 원하는 위치에 배치할 수 있습니다.
다음은 범례를 오른쪽 상단 외부에 배치하는 예제입니다.
import matplotlib.pyplot as plt
import seaborn as sns
# 데이터 생성
data = sns.load_dataset('tips')
# 그래프 생성
sns.barplot(x = "day", y = "tip", data=data)
# 범례 생성
legend = plt.legend()
# 범례를 오른쪽 상단 외부에 배치
ax.add_artist(legend, anchor=(1.35, 1))
# 그래프 표시
plt.show()
gridspec
모듈을 사용하여 별도의 그리드를 만들고 범례를 해당 그리드에 배치할 수 있습니다.
import matplotlib.pyplot as plt
import seaborn as sns
from gridspec import GridSpec
# 데이터 생성
data = sns.load_dataset('tips')
# 그래프 및 범례 생성을 위한 그리드 설정
gs = GridSpec(1, 2, width_ratios=[3, 1])
fig = plt.figure(figsize=(10, 6))
# 그래프 생성
ax = plt.subplot(gs[0])
sns.barplot(x = "day", y = "tip", data=data, ax=ax)
# 범례 생성 및 배치
ax_legend = plt.subplot(gs[1])
legend = ax.legend()
ax_legend.add_artist(legend)
ax_legend.axis('off')
# 그래프 표시
plt.show()
сторонние библиотеки 사용:
mpld3
또는 plotly
와 같은 сторонние 라이브러리를 사용하여 더 많은 제어 기능과 상호 작용 기능을 갖춘 범례를 만들 수 있습니다.
참고:
- 위에 제시된 방법은 모두 플롯 외부에 범례를 배치하는 데 유효하지만 각 방법마다 장단점이 있습니다.
- 특정 상황에 맞는 최적의 방법을 선택하려면 코드를 직접 실험하고 결과를 비교하는 것이 좋습니다.
- 범례를 사용자 정의하는 방법에 대한 자세한 내용은 Matplotlib 및 Seaborn 문서를 참조하십시오.
python matplotlib seaborn