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

Matplotlib에서 하나의 범례 항목에 여러 범례 키 표시하는 방법

Matplotlib에서 동일한 항목에 여러 범례 키 만들기

Matplotlib에서는 HandlerTuple을 활용하면 서로 다른 두 개의 플롯 요소를 하나의 범례 항목으로 묶어 표시할 수 있습니다. 즉, 빨간색 점선 선과 검은색 원형 마커 선처럼 별개의 두 데이터 계열을 한 줄의 범례 키 안에 나란히 배치할 수 있습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • plot() 메서드를 사용하여 첫 번째 선(p1)과 두 번째 선(p2)을 각각 그립니다.
  • legend() 메서드에서 두 핸들을 튜플 형태로 전달하고, numpoints=1 옵션과 함께 handler_mapHandlerTuple을 지정하여 범례를 생성합니다.
  • show() 메서드를 호출하여 최종 그림을 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerTuple

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

p1, = plt.plot([1, 2.5, 3], 'r-d')
p2, = plt.plot([3, 2, 1], 'k-o')

l = plt.legend([(p1, p2)], ['Two keys'],
               numpoints=1,
               handler_map={tuple: HandlerTuple(ndivide=None)})

plt.show()

코드 설명

핵심은 legend() 호출 시 (p1, p2)처럼 두 개의 핸들을 하나의 튜플로 묶어 전달하는 부분입니다. 이렇게 하면 HandlerTuple이 해당 튜플을 단일 범례 항목으로 처리하여, 빨간색 다이아몬드 점선 마커와 검은색 원형 마커가 한 줄에 함께 표시됩니다.

또한 ndivide=None 옵션은 핸들을 세로로 분할하지 않고 가로 방향으로 나란히 배치하도록 지정합니다. 만약 핸들을 더 많이 묶고 싶다면 튜플에 아티스트를 추가하기만 하면 되므로, 비교 연산이나 스타일 대조를 보여주는 차트에서 특히 유용하게 활용할 수 있습니다.

출력 결과

Matplotlib에서 하나의 범례 항목에 여러 범례 키 표시하는 방법