2017-02-17 57 views
0

我正在繪製一個接一個的圖(關閉窗口,看下一個圖),但我需要一種方法來中斷循環並按下一個鍵來完成腳本(例如「Esc」)。Matplotlib按鍵中斷繪圖週期

我嘗試使用mscrt.getch(),但不起作用,任何意見將不勝感激。

核心循環是這樣的:

for i, _ in enumerate(ID_SECTION): 
    FIG = plt.figure(
      num=ID_SECTION[i], 
      figsize=(10, 7.5), 
      facecolor='w' 
     ) 
    curve = FIG.add_subplot(
      1, 2, 1, 
      adjustable='box', 
      aspect='equal' 
     ) 
    curve.scatter(x, y) 
    plt.show() 
    plt.close('all') 

回答

0

如果你不介意的話按「確認」鍵每個迴路告訴循環繼續,你可以像這樣的東西添加到您的循環結束:

r = input("Continue [y]/n?") 
if r == 'n': 
    break 

否則,我認爲你必須在你的數字中加上keypress callback。從例如工作,這樣的事情可能工作:

from __future__ import print_function 
import numpy as np 
import matplotlib.pyplot as plt 

run = True 

def press(event): 
    global run 
    if event.key == 'escape': 
     run = False 

然後添加到您的循環:

FIG.canvas.mpl_connect('key_press_event', press) 
if not run: 
    break 

雖然,我不知道,添加一個回調創建數字環路是一個好主意。最好創建一個圖形並將回調添加到該圖形中,然後添加一個暫停或其他內容,以便您可以查看圖形創建每個循環的內容。但是,如果你打算這麼做,無論如何,第一個input解決方案可能會更好。

另請注意,我在後面的解決方案中使用了global,即generally frowned upon