Matplotlib에서 여러 개의 선을 그릴 때 범례(legend)를 따로 두지 않고 각 선 위에 직접 레이블을 표시하고 싶은 경우가 있습니다. 이럴 때 labellines 패키지의 labelLines() 메서드를 사용하면 손쉽게 인라인 라인 레이블을 그릴 수 있습니다.
구현 단계
- 그림 크기를 설정하고 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
- numpy를 사용해 x축 데이터 포인트를 생성하고, 레이블로 사용할 값들의 리스트 A를 만듭니다.
- 리스트 A를 순회하면서 각 항목 a에 대해 X와 함께 곡선을 그리고, 해당 값을 레이블로 지정합니다.
- labelLines() 메서드를 호출하여 그려진 모든 선 위에 각각의 레이블을 배치합니다.
- show() 메서드를 사용해 최종 그림을 화면에 출력합니다.
예제 코드
import numpy as np
from matplotlib import pyplot as plt
from labellines import labelLines
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
X = np.linspace(0, 1, 500)
A = [1, 2, 5, 10, 20]
for a in A:
plt.plot(X, np.arctan(a*X), label=str(a))
labelLines(plt.gca().get_lines(), zorder=2.5)
plt.show()실행 결과
위 코드를 실행하면 arctan 곡선 다섯 개가 그려지고, 각 선 위에 해당하는 값(1, 2, 5, 10, 20)이 인라인 형태로 직접 표시되는 것을 확인할 수 있습니다.

참고 사항
labellines는 Matplotlib 기본 패키지에 포함되어 있지 않으므로, 사용 전에 다음 명령으로 설치해야 합니다.
pip install labellines
또한 zorder 매개변수를 활용하면 레이블 텍스트가 선 위에 깔끔하게 표시되도록 렌더링 순서를 조절할 수 있으며, xvals 인자를 지정하면 특정 위치에만 레이블을 배치하는 것도 가능합니다.