Matplotlib에서 동일한 항목에 여러 범례 키 만들기
Matplotlib에서는 HandlerTuple을 활용하면 서로 다른 두 개의 플롯 요소를 하나의 범례 항목으로 묶어 표시할 수 있습니다. 즉, 빨간색 점선 선과 검은색 원형 마커 선처럼 별개의 두 데이터 계열을 한 줄의 범례 키 안에 나란히 배치할 수 있습니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- plot() 메서드를 사용하여 첫 번째 선(p1)과 두 번째 선(p2)을 각각 그립니다.
- legend() 메서드에서 두 핸들을 튜플 형태로 전달하고, numpoints=1 옵션과 함께 handler_map에 HandlerTuple을 지정하여 범례를 생성합니다.
- 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 옵션은 핸들을 세로로 분할하지 않고 가로 방향으로 나란히 배치하도록 지정합니다. 만약 핸들을 더 많이 묶고 싶다면 튜플에 아티스트를 추가하기만 하면 되므로, 비교 연산이나 스타일 대조를 보여주는 차트에서 특히 유용하게 활용할 수 있습니다.
출력 결과
