Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib에서 범례의 두 마커가 동일한 레이블을 공유하도록 설정하는 방법

Matplotlib를 사용할 때 서로 다른 선이나 마커에 같은 레이블을 부여하고 싶은 경우가 있습니다. 예를 들어 sin 곡선과 cos 곡선을 하나의 함수 표기로 묶어서 범례에 표시하는 것이죠. 이 글에서는 plot() 메서드에 동일한 label 값을 지정하는 방식으로 이를 구현하는 과정을 단계별로 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
  • NumPy를 사용해 x, y 데이터 포인트를 생성합니다.
  • plot() 메서드로 x와 y(sin(x), cos(x))를 각각 플롯하되, 두 선 모두 동일한 레이블을 지정합니다.
  • legend() 메서드에 loc=1(오른쪽 위) 옵션을 주어 범례를 배치합니다.
  • show() 메서드로 그림을 화면에 출력합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-5, 5, 100)

plt.plot(x, np.sin(x), ls="dotted", label='y=f(x)')
plt.plot(x, np.cos(x), ls="-", label='y=f(x)')
plt.legend(loc=1)

plt.show()

실행 결과

Matplotlib에서 범례의 두 마커가 동일한 레이블을 공유하도록 설정하는 방법

위 코드를 실행하면 점선으로 표시된 sin 곡선과 실선으로 표시된 cos 곡선이 하나의 범례 항목 'y=f(x)' 아래에 함께 나타나는 것을 확인할 수 있습니다. Matplotlib는 레이블이 같은 여러 플롯을 자동으로 하나의 범례 항목으로 병합하기 때문입니다.

참고 사항

다만 일반적으로는 서로 다른 플롯마다 고유한 마커와 레이블을 사용하는 것이 권장됩니다. 두 개의 마커가 하나의 레이블을 공유하면 독자가 어떤 선이 어떤 데이터를 의미하는지 혼동할 수 있기 때문입니다. 따라서 이 기법은 sin/cos처럼 의도적으로 같은 함수 계열임을 강조하고 싶은 특수한 경우에만 활용하는 것이 좋습니다.