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

Python Matplotlib 대화형 플롯에서 마우스 클릭 좌표(x, y) 얻는 방법

대화형 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()

실행 결과

위 코드를 실행하면 다음과 같은 그래프가 출력됩니다.

Python Matplotlib 대화형 플롯에서 마우스 클릭 좌표(x, y) 얻는 방법

이제 플롯 위의 아무 곳이나 마우스로 클릭하면, 콘솔에 해당 지점의 데이터 좌표가 실시간으로 출력됩니다.

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.xdataevent.ydata 속성에는 클릭한 위치의 데이터 좌표가 담겨 있으므로, 이를 응용하면 주석 표시, 특정 데이터 포인트 선택 등 다양한 인터랙티브 기능으로 확장할 수 있습니다.