我有一些Python代码示例我想分享,如果在终端Python/IPython或IPython笔记本中执行,应该做一些不同的事情.
如何从我的Python代码中检查它是否在IPython笔记本中运行?
所以我有一些python代码使用pyplot绘制一些图形.每次运行脚本时都会创建新的绘图窗口,我必须手动关闭.如何在脚本开头关闭所有打开的pyplot窗口?IE浏览器.关闭在以前执行脚本期间打开的窗口?
在MatLab中,这可以简单地通过使用来完成closeall.
我遇到matplotlib的一些问题....我无法一次打开2个窗口显示带有show()的图像,似乎脚本在我使用show的行停止并且不会继续,除非我关闭手动显示.有没有办法在脚本中关闭图形窗口?
以下代码不能按我的意愿运行:
import matplotlib.pyplot as plt
from time import sleep
from scipy import eye
plt.imshow(eye(3))
plt.show()
sleep(1)
plt.close()
plt.imshow(eye(2))
plt.show()
Run Code Online (Sandbox Code Playgroud)
我预计第一个窗口会在1秒后关闭,然后打开第二个窗口,但窗口不会关闭,直到我自己关闭它.我做错了什么,或者它应该是这样的?
我想让python制作一个绘图,在不阻塞控制流的情况下显示它,并在代码退出后保持打开.这可能吗?
这个以及相关的主题在许多其他主题中都存在(见下文),但是我无法让这个情节保持开放,并且是非阻塞的.例如,如果我pyplot.ion()之前使用过pyplot.show(),或者如果我使用,pyplot.show(block=False)那么当代码终止时,该图将关闭.这是真的使用python或ipython.如果重要的话,我正在运行OS X 10.8.2(Mountain Lion),运行python27和ipython27
相关讨论:
pylab matplotlib"show"等到窗口关闭
有没有办法分离matplotlib图,以便计算可以继续?
在Matplotlib Closing pyplot窗口中保持绘图窗口打开
我注意到当我运行时:
import pylab as pl
pl.ion()
# Plot something
pl.show()
pl.close()
Run Code Online (Sandbox Code Playgroud)
最后一条语句没有完全关闭图。图形变暗,内容消失,但图形一直显示在屏幕上,直到我退出 IPython,如下所示

我在 Linux 64 位上使用 Anaconda 发行版使用最新稳定版本的 matplotlib ( 1.3.1 ),并且我使用ssh -X.
我使用的后端如下:
backend : QT4Agg
backend.qt4 : PySide
Run Code Online (Sandbox Code Playgroud)