HOWTO · Seaborn

Seaborn 플롯에 축 레이블 추가

Axes 메서드나 Matplotlib pyplot를 사용하여 Seaborn 플롯에 x축과 y축 레이블을 설정하고 그 모양을 사용자 지정합니다.

이 페이지의 내용

Seaborn 플롯의 축 레이블을 추가하거나 바꾸려면 플롯 함수가 반환한 Matplotlib Axes 객체에서 set_xlabel()과 set_ylabel()을 호출하세요. Seaborn은 x와 y에 매핑된 변수에서 기본 레이블을 정하는 경우가 많지만, 실제 레이블은 플롯 종류와 입력에 따라 달라집니다. 독자에게 보여 줄 이름을 지정하려면 레이블을 직접 설정하세요.

Axes.set_xlabel() 및 Axes.set_ylabel()로 축 레이블 설정

이 방법은 Seaborn이 반환한 특정 axes를 대상으로 하므로, 하나의 figure에 플롯이 여러 개 있을 때도 어느 플롯을 수정하는지 분명합니다. 다음 예제는 메모리에 작은 데이터셋을 만들고 레이블을 설정한 뒤 값을 출력합니다.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns

days = ["Mon", "Tue", "Wed"]
orders = [12, 18, 15]
ax = sns.lineplot(x=days, y=orders, marker="o")
ax.set_xlabel("Day", fontsize=12)
ax.set_ylabel("Orders", fontsize=12)
print(ax.get_xlabel(), "|", ax.get_ylabel())
plt.close()

축 레이블 Day와 Orders가 있는 Seaborn 선 그래프

레이블 모양을 조정할 때는 fontsize와 color 같은 텍스트 속성을 사용할 수 있습니다. 예를 들어 두 메서드에 color="navy"를 전달하면 됩니다. 이 호출은 축 레이블을 바꿉니다. 제목은 별개이므로 제목이 필요하면 ax.set_title("Orders by day")를 사용하세요. 눈금 레이블이 축 주변에서 서로 겹친다면 ax.tick_params(axis="x", labelrotation=45)로 회전하거나, 플롯을 해당 axes에 만들기 전에 fig, ax = plt.subplots(figsize=(8, 4))로 figure 공간을 넓히세요.

Axes.set()으로 두 레이블 함께 설정

같은 Axes 객체의 두 레이블을 한 번에 설정할 때는 set()을 사용하세요. xlabel과 ylabel 키워드 인수로 두 레이블을 함께 지정할 수 있습니다. 대상 axes가 분명하도록 반환된 객체를 변수에 저장해 두세요.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns

months = ["Jan", "Feb", "Mar"]
visitors = [120, 145, 138]
ax = sns.lineplot(x=months, y=visitors, marker="o")
ax.set(xlabel="Month", ylabel="Visitors")
print(ax.get_xlabel(), "|", ax.get_ylabel())
plt.close()

축 레이블 Month와 Visitors가 있는 Seaborn 선 그래프

matplotlib.pyplot.xlabel() 및 matplotlib.pyplot.ylabel()로 레이블 설정

matplotlib.pyplot.xlabel()과 matplotlib.pyplot.ylabel() 함수는 현재 axes 하나를 사용하는 간단한 스크립트에서 편리합니다. 두 함수는 pyplot의 현재 axes에 적용되므로, figure에 플롯이 여러 개라면 먼저 대상 axes를 선택하세요. 다음 예제에서는 레이블을 적용하기 전에 Seaborn axes를 현재 axes로 만듭니다.

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns

products = ["A", "B", "C"]
sales = [8, 13, 10]
ax = sns.barplot(x=products, y=sales)
plt.sca(ax)
plt.xlabel("Product", fontsize=12)
plt.ylabel("Sales", fontsize=12)
print(ax.get_xlabel(), "|", ax.get_ylabel())
plt.close()

축 레이블 Product와 Sales가 있는 Seaborn 막대 그래프

플롯이 하나라면 어느 API로든 레이블을 설정할 수 있습니다. 플롯 객체를 이미 가지고 있거나 여러 axes를 관리한다면 Axes 메서드를 사용하는 편이 좋습니다. 주변 코드에서 현재 axes를 사용하는 방식이 자연스럽다면 pyplot을 사용하세요. 격자선을 추가하려면 대상 axes에서 ax.grid(True)를 호출하면 됩니다.