데이터 시각화를 할 때 그래프에 세로선(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'으로 선 스타일을 제거하여 깔끔한 세로선 아이콘만 남길 수 있습니다. markersize와 markeredgewidth 값을 조절하면 범례 안 마커의 크기와 굵기도 원하는 대로 변경할 수 있습니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다. 그래프에는 x=0 위치에 빨간색 세로선이 그려지고, 오른쪽 상단에는 해당 세로선을 나타내는 범례가 함께 표시됩니다.

