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

Matplotlib에서 세로선이 포함된 범례 추가하는 방법

데이터 시각화를 할 때 그래프에 세로선(vline)을 표시하고, 이 세로선의 의미를 설명하는 범례(legend)까지 함께 추가하고 싶은 경우가 자주 있습니다. Matplotlib에서는 Line2D 객체를 활용하면 실제 데이터와 연결되지 않은 가상의 핸들을 만들어 범례에 손쉽게 등록할 수 있습니다.

구현 단계

  • 그림 크기를 설정하고, 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • 하나의 그림(fig)과 서브플롯(ax) 집합을 생성합니다.
  • 빨간색으로 세로선을 그립니다.
  • 모든 정점을 잇는 실선 스타일과 각 정점에 표시되는 마커(marker)를 함께 지정할 수 있습니다.
  • legend() 메서드를 사용해 세로선에 대한 범례를 그래프 위에 배치합니다.
  • 마지막으로 show() 메서드를 호출하여 그림을 화면에 출력합니다.

예제 코드

import matplotlib.pyplot as plt
from matplotlib import lines

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

fig, ax = plt.subplots()

color = 'red'
ax.plot([0, 0], [0, 3], color=color)

vertical_line = lines.Line2D([], [], color=color, marker='|',
   linestyle='None', markersize=10,
   markeredgewidth=1.5, label='Vertical line')

plt.legend(handles=[vertical_line], loc='upper right')

plt.show()

코드 설명

핵심 포인트는 lines.Line2D([], [], ...) 부분입니다. x, y 좌표를 빈 리스트로 전달하면 실제로 그려지지 않는 '가상 핸들(dummy handle)'이 생성됩니다. 여기에 marker='|' 옵션을 사용하면 범례에 세로선 모양의 마커 기호가 표시되고, linestyle='None'으로 선 스타일을 제거하여 깔끔한 세로선 아이콘만 남길 수 있습니다. markersizemarkeredgewidth 값을 조절하면 범례 안 마커의 크기와 굵기도 원하는 대로 변경할 수 있습니다.

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다. 그래프에는 x=0 위치에 빨간색 세로선이 그려지고, 오른쪽 상단에는 해당 세로선을 나타내는 범례가 함께 표시됩니다.

Matplotlib에서 세로선이 포함된 범례 추가하는 방법Matplotlib에서 세로선이 포함된 범례 추가하는 방법