Seaborn에서 그림 외부의 범례 설정

Salman Mehmood 2024년2월15일
Seaborn에서 그림 외부의 범례 설정

이 기사는 Seaborn의 인물 전설에 관한 것입니다. 도형 밖에 범례 넣기, 씨본에서 가로 범례 만들기 등 다양한 팁을 공유해드리겠습니다.

Seaborn에서 bbox_to_anchor 인수를 사용하여 그림 외부의 범례 설정

Matplotlib 그림에 범례를 추가할 때 해당 범례의 위치가 매우 중요합니다. Matplotlib는 범례에 대한 최적의 위치를 자동 감지하려고 시도하지만 플롯 주위로 범례를 이동할 수도 있으며 특히 경우에 따라 범례를 그림 외부로 완전히 이동해야 할 수도 있습니다.

Seaborn을 사용하여 범례를 처리할 방법이 없으므로 이 문제를 해결하려면 Matplotlib가 필요합니다. 이러한 라이브러리를 함께 사용하는 방법을 살펴보겠습니다.

일부 라이브러리를 가져오고 x축과 y축에 대해 두 개의 배열을 만들어 보겠습니다. 또한 Seaborn의 lineplot() 메서드를 사용하여 두 개의 라인 플롯을 만듭니다.

암호:

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(loc="lower right")
plot.show()

범례 함수 내에 loc이라는 인수가 있습니다. 이것은 lower right와 같은 문자열을 허용할 수 있습니다. 즉, 오른쪽 하단 모서리에 범례를 배치하고 싶다는 의미입니다.

출력:

Seaborn 범례 외부 - 출력 1

해당 범례를 그림 밖으로 완전히 이동할 수 있는 방법에 대한 또 다른 사항이 있습니다. 이를 수행하는 방법에는 여러 가지가 있지만 가장 쉬운 방법을 보여 드리겠습니다.

범례를 외부로 옮기기 위해 bbox_to_anchor라는 인수를 전달합니다. 이 인수는 x 및 y 차원에 대해 0에서 1까지 범위의 튜플을 허용합니다.

암호:

plot.legend(bbox_to_anchor=(1.05, 1), loc="upper left")

따라서 1.05와 1을 전달하면 범례가 오른쪽 상단으로 이동합니다. 이 bbox_to_anchor 접근 방식을 사용하려는 경우 loc 인수를 사용하여 정렬해야 하는 범례의 모서리를 나타내야 합니다.

암호:

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(bbox_to_anchor=(1.05, 1), loc="upper left")
plot.tight_layout()
plot.show()

우리는 범례의 왼쪽 위 모서리가 지점 1.05와 1에 있음을 의미하는 왼쪽 위를 통과했습니다.

Seaborn 범례 외부 - 출력 2

위치를 변경하면(예: 왼쪽 하단) 왼쪽 하단 모서리가 해당 위치에 정렬되는 것을 볼 수 있습니다.

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(bbox_to_anchor=(1.05, 1), loc="lower left")
plot.tight_layout()
plot.show()

그러나 이 접근 방식은 예상되는 결과를 제공하지 않습니다.

출력:

Seaborn 범례 외부 - 출력 3

범례를 왼쪽 하단 모서리로 이동하는 다른 방법을 시도해 보겠습니다. bbox_to_anchor를 음수 0.05와 0으로만 전달하면 됩니다.

암호:

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(bbox_to_anchor=(-0.05, 0), loc="lower right")
plot.tight_layout()
plot.show()

이제 그림이 이동되고 범례가 완전히 그림 외부에 있습니다.

출력:

Seaborn 범례 외부 - 출력 4

ncol 인수를 사용하여 범례를 가로로 만들 수도 있습니다. 이 ncol은 열 수를 나타냅니다. 우리는 x에 양의 점을, y에 음의 점을 놓을 것입니다. 우리의 위치는 범례 경계 상자의 상단 중앙 부분이 될 것입니다.

암호:

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(ncol=2, bbox_to_anchor=(0.5, -0.1), loc="upper center")
plot.tight_layout()
plot.show()

출력:

Seaborn 범례 외부 - 출력 5

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Seaborn Legend