Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关闭循环生成的所有图形_Python_Matplotlib - Fatal编程技术网

Python 关闭循环生成的所有图形

Python 关闭循环生成的所有图形,python,matplotlib,Python,Matplotlib,我正在循环中绘制图形,例如: for i in range(100): plt.plot(x, y) plt.show() for i in range(len(100)): if (#some condition): break plt.plot(x, y) plt.show() 在循环中,我关闭当前的数字,然后绘制下一个图。我的问题是,因为我有太多的数字,如果我想在整个绘图过程中退出整个过程,有没有办法做到?< /P> 提前谢谢 更

我正在循环中绘制图形,例如:

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

在循环中,我关闭当前的数字,然后绘制下一个图。我的问题是,因为我有太多的数字,如果我想在整个绘图过程中退出整个过程,有没有办法做到?< /P> 提前谢谢

更新:终于得到我想要的:

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

我不确定我是否理解这个问题。如果要关闭所有图形,请尝试在for循环中启用
break
语句。
break
将通过
if
语句访问。例如:

for i in range(100):
    plt.plot(x, y)
    plt.show()
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

谢谢Woody,我想以交互方式关闭图形,所以如果我按下某个按钮,只需关闭图形,然后打破循环。但是现在我想我可以实现一些东西,检查我按下了哪个按钮,然后在if语句中检查它。@calBear是的,这应该可以做到!此外,您可能希望尝试使用多种方法来实现这一点。也就是说,有一个方法可以绘图,一个方法可以关闭,还有一个方法可以相互对话。如果这些都有用,请随意接受这个答案,这样问题就可以结束了:)是的,我认为这行不通,因为我想以交互方式结束它。不过还是要谢谢你!