Python/Matplotlib

[Matplotlib] 파이썬 그래프 범례(legend) 크기, 위치, 글자 색 설정법

jimmy_AI 2022. 1. 24. 21:08
반응형

plt legend 설정 방법 정리

이번 글에서는 파이썬 matplotlib 라이브러리에서

그래프의 범례를 설정하는 기본적인 방법과

범례의 크기, 위치, 글자 색 등의 속성을 정하는 방법에 대해서

다루어보도록 하겠습니다.

 

 

파이썬 그래프 범례 설정법 2가지

첫 번째로 그래프 내에 범례를 표시하는 방법은

그래프를 그리는 과정 내에서 label 인자로 해당 그래프의 범례 텍스트를 미리 지정한 뒤,

plt.legend() 메소드를 실행시켜 주시면 지정했던 범례 텍스트들이

그래프를 그린 순서대로 출력됩니다.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-2 * np.pi, 2 * np.pi, 100)

# 그래프 내에 label 인자로 범례 텍스트 지정
plt.plot(x, np.sin(x), color = 'red', label = 'y = sin x')
plt.plot(x, np.cos(x), color = 'blue', label = 'y = cos x')
plt.plot(x, x, color = 'green', label = 'y = x')

plt.legend()
plt.show()

 

 

두 번째 방법은 legend 메소드 내에서 그래프 순서대로 텍스트를 지정하여

input으로 넣어주는 것입니다. 아래 예시 코드는 위와 같은 결과를 출력합니다.

# 위 그래프와 같은 결과 출력
plt.plot(x, np.sin(x), color = 'red')
plt.plot(x, np.cos(x), color = 'blue')
plt.plot(x, x, color = 'green')

# 범례 텍스트를 따로 지정
plt.legend(['y = sin x', 'y = cos x', 'y = x'])
plt.show()

다만, 이러한 경우는 그래프의 순서와 범례의 순서가 달라지기 쉽다는 단점으로

사용을 권장드리는 형태는 아닙니다.

 

 

파이썬 그래프 범례 글자 크기 지정

범례의 글자 크기는 fontsize 인자를 통해 지정할 수 있습니다.

정수로 크기를 직접 나타내거나,

'x-small', 'small', 'medium', 'large', 'x-large'의 형태로도 지정이 가능합니다.

plt.plot(x, np.sin(x), color = 'red', label = 'y = sin x')
plt.plot(x, np.cos(x), color = 'blue', label = 'y = cos x')
plt.plot(x, x, color = 'green', label = 'y = x')

# 글자 크기 크게 지정
plt.legend(fontsize = 16)
plt.show()

반응형

legend 위치 설정

범례의 위치는 loc 인자로 설정이 가능합니다.

'upper right', 'lower left', 'center left', 'center' 처럼

(위아래 위치) - (좌우 위치) 형태로 지정이 가능합니다.

plt.plot(x, np.sin(x), color = 'red', label = 'y = sin x')
plt.plot(x, np.cos(x), color = 'blue', label = 'y = cos x')
plt.plot(x, x, color = 'green', label = 'y = x')

# 범례 위치 설정(우측 하단)
plt.legend(loc = 'lower right')
plt.show()

 

 

legend 글자 색상 지정

글자 색상은 아래와 같이 legend 인자의 텍스트를 변수로 받는 형태

각각의 범례 텍스트마다 색상 지정이 가능합니다.

plt.plot(x, np.sin(x), color = 'red', label = 'y = sin x')
plt.plot(x, np.cos(x), color = 'blue', label = 'y = cos x')
plt.plot(x, x, color = 'green', label = 'y = x')

# 범례 텍스트 색상 설정
colors = ['red', 'blue', 'green']

leg = plt.legend()
for i, text in enumerate(leg.get_texts()):
    plt.setp(text, color = colors[i])

plt.show()

이 외에도 범례의 frame 여부를 설정할 수 있는 frameon 인자,

범례의 그림자 여부를 설정가능한 shadow 인자,

범례 frame의 색을 지정할 수 있는 edgecolor 인자 등

여러 기능을 plt.legend 메소드에서 제공하고 있습니다.