Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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
Matplotlib python show()立即返回_Python_Matplotlib - Fatal编程技术网

Matplotlib python show()立即返回

Matplotlib python show()立即返回,python,matplotlib,Python,Matplotlib,我有一个简单的python脚本,它在同一个图中绘制了一些图。所有图都是由draw创建的,最后我调用show函数block 用于与Python 2.6.6、Matplotlib 0.99.3和Ubuntu 11.04一起使用的脚本。尝试在Python2.7.2、Matplotlib 1.0.1和Ubuntu11.10下运行它,但是show函数立即返回,而不必等待终止该图 这是虫子吗?或者一个新的功能,我们将不得不改变我们的脚本?有什么想法吗 编辑:它确实在交互模式下保持绘图打开,即python-i

我有一个简单的python脚本,它在同一个图中绘制了一些图。所有图都是由draw创建的,最后我调用show函数block

用于与Python 2.6.6、Matplotlib 0.99.3和Ubuntu 11.04一起使用的脚本。尝试在Python2.7.2、Matplotlib 1.0.1和Ubuntu11.10下运行它,但是show函数立即返回,而不必等待终止该图

这是虫子吗?或者一个新的功能,我们将不得不改变我们的脚本?有什么想法吗


编辑:它确实在交互模式下保持绘图打开,即python-i…,但它过去在没有交互模式的情况下工作,并尝试在脚本中使用plt.ion并在正常模式下运行,但没有成功。

我认为使用showblock=True应该可以解决您的问题。

我也遇到了同样的问题,这是由于在Figure对象而不是pyplot对象上调用show引起的

错误代码。使图形在屏幕上短暂闪烁:

    import matplotlib.pyplot as plt

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

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

    fig.show()
最后一行应如下所示,以显示图形,直到其被取消:

    plt.show()
有了,matplotlib似乎可以在交互或非交互模式下工作,这是基于一些我无法跟踪的东西,一种是在空闲状态下,另一种是在系统控制台中,一种是在普通spyder控制台中,另一种是在专用控制台中

这对我很有用:

import matplotlib
matplotlib.interactive(False)
事实上,我想要的是交互模式,但在你的情况下,反过来应该会有所帮助。 ion和ioff应该做同样的事情,但上面是matplotlib的级别,而不仅仅是pyplot或pylab。这对我来说是可行的,尽管我以后会单独导入pyplot,并且不再这样调用matplotlib。我认为plt.ion只对pyplot有影响,而不是使用pyplot时可能涉及或可能不涉及的matplotlib的其他组件


这种方法适用于我在Windows 7上使用的情况,在两个64位系统上的所有可用Python控制台和IDE上使用Python 2.65和matplotlib 0.99以及Python 2.75和matplotlib 1.3.1。但是,它在Linux SuSe 11.3 64位上不起作用,因此在调用Figure对象上的show时,这里肯定存在一些平台依赖性来复制matplotlib.show与tkagg后端的行为:

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

下面的代码也有同样的问题

import matplotlib.pyplot as plt

plt.ion()
fig,ax0 = plt.subplots(figsize=(5.3,4))

plt.show()

我删除了plt.ion,绘图不会自动关闭。

代码是SO的主要主题。给我们一些你是对的。我试着用一个更简单的例子来重现它,但没有成功。我将尝试精简代码,并向您强调问题的根源。解决方法可能是在脚本的最后一行使用原始输入。我想到了它,并做了一次尝试。睡眠,但图形处理程序不工作,它被冻结,因此我放弃了这个想法,但您是正确的。对于原始输入,我没有这个问题!很好,但是,它应该在不使用原始输入的情况下工作。你在什么地方有问题。试着组合一段代码来重现效果。或者反过来,在您删除的代码中查找问题,以准备现在可以工作的代码片段!:-谢谢你的回答,但是没有。可能是旧版本。它只是告诉我block是一个意外参数。@要显示的gpierris block参数至少在matplotlib 1.1.0中存在。但是,默认设置为阻止,因此,如果之前在代码中未更改模式,则将其设置为True与matplotlib 2.2.3Tkinter不是软件包中的工作无关。他的例子对于python2是正确的,在Python3中是正确的。同时也证实,他的解决方案适用于我们的特定用例。非常感谢。这也是我的问题,但仅在独立Python中。在水蟒身上一切都很好。所以这是一个Bug还是一个特性?