2017-03-01 1 views
1

파이썬 스크립트로 여러 파이썬 노트 파일을 변환하려고합니다. 파이썬 패키지를 만들 수 있습니다 ... 지금 제가 가지고있는 문제는 파이썬 노트북에서,% matplotlib 노트북의 기능을 파이썬 스크립트로 변환합니다.

%matplotlib notebook 

사용자가 플롯을 클릭하고 그/그녀가 방금 클릭 한 플롯의 좌표를 수신하게하는 마법 버튼. 그것을 실현하는 방법은 아래와 같습니다 :

f = urllib.urlopen(url_link) 
fig = plt.figure(figsize=(3,3)) 
coords = coordinates(my_coord)[1] 
image = plt.imread(f) 
plt.imshow(image) 

collector = {'x':0,'y':0} 
def onclick(event): 
    collector['x'] = event.x 
    collector['y'] = event.y 

cid = fig.canvas.mpl_connect('button_press_event',onclick) 
print(collector) 

이제 파이썬 스크립트에서 같은 기능을하고 싶습니다. 그러나 원본에서

%matplotlib notebook 

는 작동하지 않는다. 내 파이썬 스크립트가 동일한 일을 할 수있는 다른 방법이 있습니까 : 음모를 보여주는 사용자가 클릭하고 클릭 좌표 사용자를 반환 할 수 있습니까?

미리 Thx!

답변

0

원칙적으로 이러한 이벤트 처리는 matplotlib 플로팅 윈도우에서 자동으로 사용할 수 있기 때문에 필요하지 않습니다.

다음 스크립트

import matplotlib.pyplot as plt 

image = plt.imread("image.jpg") 

fig, ax = plt.subplots(figsize=(4,3)) 
ax.imshow(image) 

plt.show() 

하부 상태 바 안의 현재 마우스 위치의 좌표를 나타내고,이 창을

enter image description here

생성한다.

그러나 물론 기능은이 그림이 아닌 데이터 좌표, 좌표에서 인쇄 할 메커니즘을

import matplotlib.pyplot as plt 

image = plt.imread("image.jpg") 

fig, ax = plt.subplots(figsize=(4,3)) 
ax.imshow(image) 

collector = {'x':0,'y':0} 
def onclick(event): 
    collector['x'] = event.x 
    collector['y'] = event.y 
    print(collector) 

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

plt.show() 

주 처리 같은 이벤트를 사용하여 문제로 확장 할 수 있습니다. 그림 좌표는 대부분의 경우 쓸모가 없으므로 이와 같이 데이터 좌표를 사용하는 것이 좋습니다.

collector['x'] = event.xdata 
collector['y'] = event.ydata 

matplotlib 페이지의 event handling article도 참조하십시오.

+0

cool! 하지만 여전히 한 가지 더 많은 문제가 있습니다 ... 반환 값은 항상 정수 형식입니다. 그러나 나중에 사용하기 위해 부동 소수점으로 사용하고 싶습니다. 모든 솔루션에서 저를 할 수 있습니까? –

+0

'return '값은 무엇을 의미합니까? 여기에는 반환이 없습니다. 물론 값을'float'처럼'collector [ 'x'] = float (event.xdata)'와 같이 캐스팅 할 수 있습니다. – ImportanceOfBeingErnest

+0

나는 더 정확하게 클릭 한 점의 좌표를 인쇄 할 수 있는지 여부를 의미했습니다. x : 503.449 y : 521.459를 클릭하면 원래 값 대신 x-503 및 y = 521이 표시됩니다. 이 근사치를 피할 수있는 방법이 있습니까? –

관련 문제