如何关闭所有pyplot窗口(包括以前脚本执行中的窗口)?

时间:2015-11-22 10:31:54

标签: python matplotlib pycharm

所以我有一些python代码使用pyplot绘制一些图形。每次运行脚本时都会创建新的绘图窗口,我必须手动关闭。如何在脚本开头关闭所有打开的pyplot窗口? IE浏览器。关闭在以前执行脚本期间打开的窗口?

在MatLab中,只需使用closeall即可完成。

7 个答案:

答案 0 :(得分:7)

要关闭脚本中的所有打开数字,您可以致电

{{1}}

或者您可以终止关联的Python进程。

答案 1 :(得分:2)

此解决方案不允许您关闭以前运行的图,但会阻止您将其保持打开状态!

我发现关闭这些“悬而未决”数字的唯一方法是找到进程并杀死它。

以非阻塞方式绘制,然后要求输入。这样可以避免您忘记正确关闭绘图。

plt.show(block=False)
plt.pause(0.001) # Pause for interval seconds.
input("hit[enter] to end.")
plt.close('all') # all open plots are correctly closed after each run

答案 2 :(得分:1)

我只是遇到了同样的问题。我调用一个生成多个绘图窗口的函数。每次我调用该函数时,弹出的绘图窗口都会累积数量。在函数开始时尝试matplotlib.pyplot.close('All')并不能解决问题。我通过调用matplotlib.pyplot.close(figure)解决了这个问题,其中Figure是一个地物实例(对象)。 我维护了一个绘图对象的列表。因此,最好维护一个列表,然后为图形对象的每个实例调用matplotlib.pyplot.close(figure)

import matplotlib.pyplot as plot

将绘图实例对象(图,轴)添加到列表中:

fig, (ax1,ax2) = plt.subplots(nrows=2)
figAxisDict = {'figure': fig, 'axis1': ax1, 'axis2':ax2}

figAxisList.append(figAxisDict)

调用图形闭合功能,然后清除列表:

if len(figAxisList) !=0:

    for figAxis in figAxisList:
        figure=figAxis['figure']

        plot.close(figure)

    figAxisList[:]=[] 

答案 3 :(得分:0)

import matplotlib.pyplot as plt
plt.close("all")

(如果你已经导入了pyplot,你显然不需要再次导入它。在这种情况下,只需确保用plt中的plt.close("all")替换你选择的别名导入时的pyplot。)

答案 4 :(得分:0)

似乎没有绝对简单的解决方案可以从脚本本身自动执行此操作:关闭pycharm中所有现有图形的可能最简单的方法是杀死相应的进程(如jakevdp在他的评论中建议的那样):

菜单运行\停止...(Ctrl-F2)。您会发现窗户关闭了几秒钟的时间。

答案 5 :(得分:0)

老实说,开发人员需要把它变成一个简单的函数,就像在 MATLAB 中一样。

我对 Spyder 的临时解决方案:

  1. 首先通过 Anaconda Prompt 安装键盘和 pynput
  2. 在 Spyder 中,用鼠标在绘图窗格所在的位置上运行“mouse.position”

这些坐标是您需要在下面的代码中替换的坐标。

import keyboard
from pynput.mouse import Button, Controller

#%% Clear Old Plots
#Selects the mouse as the controller
mouse = Controller()

#Record current mouse position
recmp = mouse.position

#Set pointer position on plots pane
mouse.position = (1136,370) # <-- replace coordinates here with yours!

#Opens the plot pane
keyboard.press_and_release('ctrl+shift+g')

#Click and release left mouse button
mouse.press(Button.left)
mouse.release(Button.left)

#Runs close all in the plots pane
keyboard.press_and_release('ctrl+shift+w')

#Resets mouse position to the original location
mouse.position = recmp

答案 6 :(得分:-2)

在* nix上,您可以使用killall命令。

killall app

使用应用程序关闭窗口名称的每个窗口实例。 您也可以在python脚本中使用相同的命令 您可以使用os.system("bashcommand")运行bashcommand。