Matplotlib에서 틱(tick) 자체의 위치는 그대로 유지한 채 틱 레이블(label)만 원하는 곳으로 옮기고 싶다면, axvline() 메서드로 기준선을 먼저 그린 후 annotate() 메서드를 활용해 레이블을 원하는 좌표에 배치하는 방식으로 해결할 수 있습니다. 이 방법은 축 설정을 복잡하게 변경하지 않고도 시각적으로 명확한 주석을 추가할 수 있어 매우 유용합니다.
구현 단계
- 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
- 변수 delta를 초기화합니다.
- numpy를 사용하여 x, y 데이터 포인트를 생성합니다.
- axvline() 메서드로 delta 위치에 수직선을 그립니다.
- annotate() 메서드로 해당 선에 주석(레이블)을 추가합니다.
- plot() 메서드로 x, y 데이터를 그래프에 표시합니다.
- show() 메서드를 호출하여 그림을 화면에 출력합니다.
예제 코드
from matplotlib import pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True delta = 2.0 x = np.linspace(-10, 10, 100) y = np.sinc(x - delta) plt.axvline(delta, ls="--", color="r") plt.annotate(r"$\delta$", xy=(delta + 0.2, -0.2), color="r", size=15) plt.plot(x, y) plt.show()
위 코드에서 axvline(delta)은 x=delta 지점에 빨간색 점선을 그리고, annotate()의 xy 인자에 약간의 오프셋을 더한 좌표를 지정함으로써 레이블($\delta$)이 선에서 살짝 떨어진 위치에 자연스럽게 배치됩니다. 이처럼 annotate의 좌표만 조절하면 틱과 축 설정에는 전혀 영향을 주지 않으면서 레이블 위치를 자유롭게 이동할 수 있습니다.
실행 결과
