Matplotlib python show()立即返回

gpi*_*ris 47 python matplotlib

我有一个简单的python脚本,它绘制了同一图中的一些图形.所有图形都是由draw()创建的,最后我调用show()函数来阻止.

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

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

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

Cra*_*den 57

我有同样的问题,它是由调用show()Figure对象而不是pyplot对象引起的.

不正确的代码.使图表在屏幕上闪烁一小段时间:

    import matplotlib.pyplot as plt

    x = [1,2,3]
    y = [5,6,7]

    fig = plt.figure()
    plt.plot(x, y)

    fig.show()
Run Code Online (Sandbox Code Playgroud)

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

    plt.show()
Run Code Online (Sandbox Code Playgroud)


Guy*_*ini 39

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

  • 使用`plt.show(block = True)`为我做了. (8认同)
  • 谢谢你的回答,但没有。可能那是一个旧版本。它只是告诉我阻塞是一个意想不到的参数。 (2认同)

Zak*_*Zak 7

有反向问题,似乎matplotlib将基于我无法追踪的许多事情在交互式或非交互模式下工作(IDLE中的一种方式,系统控制台中的另一种方式,普通spyder控制台中的一种方式,另一种方式)一个专门的......)

这对我有用:

import matplotlib
matplotlib.interactive(False)
Run Code Online (Sandbox Code Playgroud)

(实际上,我想要交互模式,但在你的情况下,逆应该有帮助.) ion()并且ioff()应该做同样但上面是在matplotlib的级别,而不仅仅是pyplot或pylab.这对我有用,虽然我(稍后)单独导入pyplot并且再也不会再调用matplotlib.我认为plt.ion()只对pyplot有影响,而不是matplotlib的其他组件,使用pyplot时可能会或可能不会涉及.

这个方法适用于Windows 7,在所有可用的python控制台和两个系统上的IDE(64位,两者都使用)中使用Python 2.65和matplotlib 0.99以及Python 2.75和matplotlib 1.3.1.但是,它确实不适用于Linux(SuSe 11.3,64 bit),所以这里肯定会有一些平台依赖


小智 5

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

import Tkinter as Tk
import matplotlib.pyplot as plt
fig = plt.figure()
... your plot commands...
fig.show()
Tk.mainloop()
Run Code Online (Sandbox Code Playgroud)

  • 他的示例对于 python2 是正确的,它是 python 3 中的 tkinter。 /sf/ask/1813387831/ 还证实,他的解决方案适用于我们的特定用例。谢谢你! (2认同)