Matplotlib python show()立即返回

我有一个简单的Python脚本,绘制在同一个图中的一些图。 所有graphics都是由draw()创build的,最后我调用show()函数来阻止。

该脚本曾用于Python 2.6.6,Matplotlib 0.99.3和Ubuntu 11.04。 试图在Python 2.7.2,Matplotlib 1.0.1和Ubuntu 11.10下运行它,但show()函数立即返回而不用等待杀死数字。

这是一个错误? 或者一个新function,我们将不得不改变我们的脚本? 有任何想法吗?

编辑:它确保打开交互模式下,即python -i,但它曾经没有这个工作,并试图在脚本中的plt.ion(),并在正常模式下运行,但没有运气。

我有同样的问题,这是由graphics对象,而不是pyplot对象调用show()引起的。

不正确的代码。 使graphics在短时间内在屏幕上闪烁:

  import matplotlib.pyplot as plt x = [1,2,3] y = [5,6,7] fig = plt.figure() plt.plot(x, y) fig.show() 

最后一行应该如下显示图表,直到它被解雇:

  plt.show() 

我认为使用show(block=True)应该可以解决你的问题。

有相反的问题 ,似乎matplotlib将工作在交互式或非交互模式的基础上,我不能跟踪的一些事情(IDLE的一种方式,另一种在系统控制台,一种方法在普通的Spyder控制台,另一种一个专门的…)

这对我工作:

 import matplotlib matplotlib.interactive(False) 

(实际上,我想要交互模式,但在你的情况下,逆应该有所帮助。) ion()ioff()应该做同样的事情,但是上面是在matplotlib的层次上,而不仅仅是pyplot或pylab。 这对我来说,虽然我(后来)分别导入pyplot,而不是再次调用matplotlib。 我在想plt.ion()只对pyplot有影响,而不是matplotlib的其他组件,在使用pyplot时可能不会涉及到。

这个方法适用于Windows 7,在两个系统(64位,都是这两个系统)上的所有可用的python控制台和IDE上,使用Python 2.65与matplotlib 0.99和Python 2.75与matplotlib 1.3.1。 但是,它并没有在Linux(SuSe 11.3,64位)上工作,所以在这里肯定有一些平台依赖

在调用graphics对象上的show()时,用tkagg后端复制matplotlib.show()行为:

 import Tkinter as Tk import matplotlib.pyplot as plt fig = plt.figure() ... your plot commands... fig.show() Tk.mainloop()