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

Matplotlib에서 마우스 클릭 시 해당 지점의 좌표를 표시하는 방법

Matplotlib에서는 button_press_event 이벤트를 활용하면 플롯 위에서 마우스를 클릭한 지점의 x, y 좌표를 손쉽게 확인할 수 있습니다. 아래 단계별 예제를 통해 구현 방법을 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백을 자동으로 조정합니다.

  • 새 그림을 생성하거나 기존 그림을 활성화합니다.

  • 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.sin(x)

plt.plot(x, y)

plt.show()

실행 결과

위 코드를 실행하면 다음과 같은 사인 곡선 그래프가 나타납니다.

Matplotlib에서 마우스 클릭 시 해당 지점의 좌표를 표시하는 방법

그래프 위의 원하는 위치를 클릭할 때마다 해당 지점의 좌표 값이 콘솔에 순서대로 출력됩니다.

x: -3.099305446290094 and y: -0.013811108549791173
x: -0.2865652183685867 and y: -0.2067543563498595
x: -3.0280968329249927 and y: -0.1844916739113902
x: -5.7696284474814 and y: 0.4240216460734405
x: -3.9182044999887626 and y: 0.6837529411889172

핵심 포인트 정리

이 기능의 핵심은 fig.canvas.mpl_connect() 메서드입니다. 이 메서드는 Matplotlib 캔버스에서 발생하는 특정 이벤트와 사용자 정의 함수를 연결해 줍니다. 이벤트 핸들러 함수 내부에서 event.xdataevent.ydata 속성에 접근하면 클릭된 지점의 실제 데이터 좌표를 얻을 수 있습니다. 이를 응용하면 클릭한 지점에 주석(annotation)을 추가하거나, 마커를 표시하는 등 다양한 인터랙티브 시각화 기능을 구현할 수 있습니다.