2014-11-13 2 views
0

Я черчение фигуры в цикле, например:Закройте все фигуры, порожденную петлей

for i in range(100): 
    plt.plot(x, y) 
    plt.show() 

В цикле я закрыть текущий рисунок, а затем вычерчивает следующий рисунок. Мой вопрос в том, что, поскольку у меня слишком много цифр, если я хочу бросить весь процесс в середине заговора, есть ли способ сделать это?

Заранее спасибо.

Обновление: Наконец получил то, что я хочу:

import matplotlib.pyplot as plt 
import random 

#this dict will save the key your pressed 
pressed_key = {} 

def press(event): 
    print('press', event.key) 
    if event.key=='q': 
     #close the current figure 
     plt.close(event.canvas.figure) 
     pressed_key['key'] = event.key 

for i in range(10): 
    #generate x, y for plotting 
    x = random.sample(range(1, 100), 20) 
    y = random.sample(range(1, 100), 20) 

    fig = plt.figure() 
    plt.plot(x,y,'o') 

    fig.canvas.mpl_connect('key_press_event', press) 

    plt.show() 

    #if the pressed key is q, then stop looping through figures 
    #note, here must use dict.get('key'), otherwise will have key error 
    if pressed_key.get('key') == 'q': 
     break 

ответ

1

Лучший способ сделать это - включить оператор break в цикл for. Доступ к break будет осуществляться с помощью инструкции if. Например:

for i in range(len(100)): 
    if (#some condition): 
     break 
    plt.plot(x, y) 
    plt.show() 

условие вы можете искать может быть i==50 или любой может реализовать другой переменной, что вы работаете. В вашем случае, может быть, это момент, когда есть много цифр, и вы хотели бы закрыть некоторые. То есть, вы можете использовать

if(figure_count >=20): 
    close figures && break 
+0

Спасибо Вуди, я хочу закрыть фигуры в интерактивном режиме, поэтому, если я нажму кнопку, просто закрою фигуры и сломаю петлю. Но теперь я думаю, что могу что-то реализовать, чтобы проверить, какую кнопку я нажал, и затем проверить его в инструкции if. – calBear

+0

@calBear Да, это должно сделать трюк! Кроме того, вы можете попытаться сделать это несколькими способами. То есть, есть один метод, который показывает, один метод, который закрывается, и один метод, который говорит друг с другом. Если это полезно, не стесняйтесь принять этот ответ, поэтому вопрос можно закрыть :) –

+0

Да, я буду использовать этот трюк! Благодаря! – calBear

0

Я не уверен, что понял вопрос. Если вы хотите закрыть все цифры, попробуйте plt.close("all").

+0

Да, я не думаю, что это сработает, потому что я хочу закрыть его в интерактивном режиме. Но все равно спасибо! – calBear

Смежные вопросы