대화형 Matplotlib 플롯에서 마우스로 클릭한 지점의 (x, y) 좌표를 확인하려면 Matplotlib의 이벤트 핸들링 기능을 활용하면 됩니다. 아래 단계를 따라 간단하게 구현할 수 있습니다.
구현 단계
그림(figure) 크기를 설정하고 서브플롯 주변의 여백을 자동으로 조정합니다.
plt.figure()로 새 그림을 생성하거나 기존 그림을 활성화합니다.mpl_connect()메서드를 사용해 mouse_event 함수를 button_press_event 이벤트에 연결합니다.numpy를 사용하여 x, y 데이터 포인트를 생성합니다.
plot()메서드로 x, y 데이터를 플롯합니다.show()메서드로 그림을 화면에 표시합니다.
예제 코드
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
def mouse_event(event):
print('x: {} and y: {}'.format(event.xdata, event.ydata))
fig = plt.figure()
cid = fig.canvas.mpl_connect('button_press_event', mouse_event)
x = np.linspace(-10, 10, 100)
y = np.exp(x)
plt.plot(x, y)
plt.show()
실행 결과
위 코드를 실행하면 다음과 같은 그래프가 출력됩니다.

이제 플롯 위의 아무 곳이나 마우스로 클릭하면, 콘솔에 해당 지점의 데이터 좌표가 실시간으로 출력됩니다.
x: -3.633289020076159 and y: 7344.564590474489 x: 3.2193731551790172 and y: 3255.6463283494704 x: 8.680088326085489 and y: 802.2953710744596 x: 7.680741758860773 and y: 11269.926122114506 x: 0.6139338906288732 and y: 16503.741497634528
동작 원리
mpl_connect()는 Matplotlib 캔버스에 이벤트 리스너를 등록하는 메서드입니다. 여기서는 마우스 버튼이 눌리는 순간 발생하는 'button_press_event' 이벤트에 mouse_event 함수를 연결했습니다. 이벤트 객체의 event.xdata와 event.ydata 속성에는 클릭한 위치의 데이터 좌표가 담겨 있으므로, 이를 응용하면 주석 표시, 특정 데이터 포인트 선택 등 다양한 인터랙티브 기능으로 확장할 수 있습니다.