2016-08-29 2 views
1

나는 포인트가 좋든 그렇지 않든간에 각 포인트로 이동하여 플롯의 그림을 저장하는 스크립트를 만들려고합니다. 그러나이 수치는 단지 반응이 없거나 공란입니다. 어떤 아이디어? 파이썬 수치가 충돌하고 응답이 없습니다

import matplotlib.pyplot as plt 

A = range(-3, 3, 1) 

for moving in range(len(A)): 
    parsedFile = 'TEST/data_%d' % (moving) 

    plt.figure(1) 
    plt.plot(A) 
    plt.plot(A[moving],"rx") 

plt.show(block=False) 
plotChoice = raw_input("Is this a good value? (y/n): ") 

if plotChoice == 'y': 
    plt.savefig(parsedFile + '.jpg', pdi=1000) 
    plt.clf() 
    plt.close() 
else: 
    plt.clf() 
    plt.close() 

는도 닫힐 때까지 차단 비 - 대화 형 모드에서 plt.show() PyCharm

답변

0

를 사용 달렸다. block 인수는 문서에 따라 실험적이며, 귀하의 경우에는 작동하지 않는다고 생각됩니다. 글쎄, 적어도 그것은 나를 위해 작동하지 않습니다.

플롯 사용자와 상호 작용하려면 Button 위젯을 사용할 수 있습니다. '예'와 '아니요'두 개의 버튼을 플롯에 직접 배치 할 수 있습니다. 여기 예를 찾을 수 있습니다 : http://matplotlib.org/examples/widgets/buttons.html

버튼 배치가 간단하지 않기 때문에 약간의 질문을 위해 플롯 제목을 사용하고 옆에 버튼을 추가했습니다. 추한 것처럼 보일 수도 있고 필요에 따라 자유롭게 조정할 수 있습니다.

import matplotlib.pyplot as plt 
from matplotlib.widgets import Button 

ax = plt.subplot() 
plt.title('Is this a good value?') 

A = range(-3, 3, 1) 

for moving in range(len(A)): 
    parsedFile = 'TEST/data_%d' % moving 

    ax.plot(A) 
    ax.plot(A[moving], 'rx') 

def yes(event): 
    plt.savefig(parsedFile + '.jpg', pdi=1000) 
    plt.clf() 
    plt.close() 

def no(event): 
    plt.clf() 
    plt.close() 

yes_axes = plt.axes([0.69, 0.91, 0.1, 0.075]) 
yes_button = Button(yes_axes, 'Yes') 
yes_button.on_clicked(yes) 

no_axes = plt.axes([0.80, 0.91, 0.1, 0.075]) 
no_button = Button(no_axes, 'No') 
no_button.on_clicked(no) 

plt.show()