Matplotlib 범례 표시하기


Matplotlib 범례 표시하기

범례 (Legend)는 그래프에 데이터의 종류를 표시하기 위한 텍스트입니다.

matplotlib.pyplot 모듈의 legend() 함수를 사용해서 그래프에 범례를 표시할 수 있습니다.

이 페이지에서는 그래프에 다양한 방식으로 범례를 표시하는 방법에 대해 소개합니다.



1) 기본 사용

예제

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [2, 3, 5, 10], label='Price ($)')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
plt.legend()

plt.show()

그래프 영역에 범례를 나타내기 위해서는

우선 plot() 함수에 label 문자열을 지정하고,

matplotlib.pyplot 모듈의 legend() 함수를 호출합니다.

아래와 같이 그래프 내부에 데이터를 설명하는 범례가 나타납니다.


Matplotlib 범례 표시하기 - 기본 사용

Matplotlib 범례 표시하기 - 기본 사용





2) 위치 지정하기

예제1

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [2, 3, 5, 10], label='Price ($)')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
# plt.legend(loc=(0.0, 0.0))
# plt.legend(loc=(0.5, 0.5))
plt.legend(loc=(1.0, 1.0))

plt.show()

legend() 함수의 loc 파라미터를 이용해서 범례가 표시될 위치를 설정할 수 있습니다.

loc 파라미터를 숫자 쌍 튜플로 지정하면, 해당하는 위치에 범례가 표시됩니다.

loc=(0.0, 0.0)은 데이터 영역의 왼쪽 아래, loc=(1.0, 1.0)은 데이터 영역의 오른쪽 위 위치입니다.

loc 파라미터에 여러 숫자 쌍을 입력하면서 범례의 위치를 확인해보세요.


Matplotlib 범례 표시하기 - 위치 지정하기1

Matplotlib 범례 표시하기 - 위치 지정하기1




예제2

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [2, 3, 5, 10], label='Price ($)')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
plt.legend(loc='lower right')

plt.show()

loc 파라미터는 예제에서와 같이 문자열로 지정할 수도 있고, 숫자 코드를 사용할 수도 있습니다.

loc=’lower right’와 같이 지정하면 아래와 같이 오른쪽 아래에 범례가 표시됩니다.


Matplotlib 범례 표시하기 - 위치 지정하기2

Matplotlib 범례 표시하기 - 위치 지정하기2


위치 지정 문자열과 코드는 아래의 표를 참고하세요.

Location String

Location Code

설명

‘best’

0

그래프의 최적의 위치에 표시합니다. (디폴트)

‘upper right’

1

그래프의 오른쪽 위에 표시합니다.

‘upper left’

2

그래프의 왼쪽 위에 표시합니다.

‘lower left’

3

그래프의 왼쪽 아래에 표시합니다.

‘lower right’

4

그래프의 오른쪽 아래에 표시합니다.

‘right’

5

그래프의 오른쪽에 표시합니다.

‘center left’

6

그래프의 왼쪽 가운데에 표시합니다.

‘center right’

7

그래프의 오른쪽 가운데에 표시합니다.

‘lower center’

8

그래프의 가운데 아래에 표시합니다.

‘upper center’

9

그래프의 가운데 위에 표시합니다.

‘center’

10

그래프의 가운데에 표시합니다.




3) 열 개수 지정하기

예제

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [2, 3, 5, 10], label='Price ($)')
plt.plot([1, 2, 3, 4], [3, 5, 9, 7], label='Demand (#)')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
# plt.legend(loc='best')          # ncol = 1
plt.legend(loc='best', ncol=2)    # ncol = 2

plt.show()

legend() 함수의 ncol 파라미터는 범례에 표시될 텍스트의 열의 개수를 지정합니다.

기본적으로 아래 첫번째 그림과 같이 범례 텍스트는 1개의 열로 표시되며,

ncol=2로 지정하면 아래 두번째 그림과 같이 표시됩니다.


Matplotlib 범례 표시하기 - 열 개수 지정하기 (ncol=1)

Matplotlib 범례 표시하기 - 열 개수 지정하기 (ncol=1)


Matplotlib 범례 표시하기 - 열 개수 지정하기 (ncol=2)

Matplotlib 범례 표시하기 - 열 개수 지정하기 (ncol=2)





4) 폰트 크기 지정하기

예제

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [2, 3, 5, 10], label='Price ($)')
plt.plot([1, 2, 3, 4], [3, 5, 9, 7], label='Demand (#)')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
# plt.legend(loc='best')
plt.legend(loc='best', ncol=2, fontsize=14)

plt.show()

legend() 함수의 fontsize 파라미터는 범례에 표시될 폰트의 크기를 지정합니다.

폰트 크기를 14로 지정했습니다.

결과는 아래와 같습니다.


Matplotlib 범례 표시하기 - 폰트 크기 지정하기

Matplotlib 범례 표시하기 - 폰트 크기 지정하기





5) 범례 테두리 꾸미기

예제

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [2, 3, 5, 10], label='Price ($)')
plt.plot([1, 2, 3, 4], [3, 5, 9, 7], label='Demand (#)')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
# plt.legend(loc='best')
plt.legend(loc='best', ncol=2, fontsize=14, frameon=True, shadow=True)

plt.show()

frameon 파라미터는 범례 텍스트 상자의 테두리를 표시할지 여부를 지정합니다.

frameon=False로 지정하면 테두리가 표시되지 않습니다.

shadow 파라미터를 사용해서 텍스트 상자에 그림자를 표시할 수 있습니다.

결과는 아래와 같습니다.


Matplotlib 범례 표시하기 - 범례 테두리 꾸미기

Matplotlib 범례 표시하기 - 범례 테두리 꾸미기


이 외에도 legend() 함수에는 facecolor, edgecolor, borderpad, labelspacing과 같은 다양한 파라미터가 있습니다.

더 자세한 내용은 공식 홈페이지의 설명 (링크)을 참고하세요.



이전글/다음글