2014-09-27 5 views
1

matplotlib에서 플롯을 클릭하고 클릭 위치의 y 값을 변수로 반환하려고합니다. matplotlib에서 event.ydata의 위치를 ​​출력하는 예제를 사용했지만 리턴하는 방법을 알 수 없습니다!python matplotlib에서 ydata를 반환합니다.

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(np.random.rand(10)) 

def onclick(event): 
    print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(event.button, event.x, event.y, event.xdata, event.ydata) 

cid = fig.canvas.mpl_connect('button_press_event', onclick) 
+0

무엇에 돌려 주시겠습니까? 다른 코드가 사용할 위치를 기록하려면 전역 변수를 사용하고 event.ydata에 콜백으로 할당 할 수 있습니다. – Lukeclh

+0

전역 변수가 아닌 변수로 반환하고 싶지만이 스크립트의 범위에서는 onclick 함수 (예 : cid)가 아닙니다. – takzilla

답변

1

정확하게 이해하면 플롯을 팝업하고 계속하기 전에 사용자가 플롯을 클릭하여 포인트를 클릭하기를 기다려야합니다. 내가 아는 한 미리 패키지화 된 방법이 없지만 아래 코드는 원하는 것을 수행해야합니다. 전체 공개 : 전역 변수를 사용합니다.

import matplotlib.pyplot as plt 
import numpy as np 
fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(np.random.rand(10)) 

retval = -1 
def onclick(event): 
    print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(event.button, event.x, event.y, event.xdata, event.ydata) 
    # Record the x location of the user's click in the global variable and close the figure 
    global retval 
    retval = event.xdata 
    plt.close() 

cid = fig.canvas.mpl_connect('button_press_event', onclick) 
# Bring up the figure (and wait) 
plt.show() 

print 'User selected point {0}'.format(retval) 
+0

감사합니다 lukeclh! – takzilla

관련 문제