Matplotlib中断绘图循环按一个键

时间:2017-02-17 15:13:08

标签: python python-3.x matplotlib

我正在一个接一个地绘制一些数字(关闭窗口,看下一个),但我需要一种方法来中断循环并通过按键完成脚本(" Esc"例如)。

我尝试使用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')

1 个答案:

答案 0 :(得分: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解决方案可能会更好。

另请注意,我在后一个解决方案generally frowned upon中使用了global