Matplotlib python show()立即返回
我有一个简单的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函数立即返回,而不必等待终止该图 这是虫子吗?或者一个新的功能,我们将不得不改变我们的脚本?有什么想法吗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-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还是一个特性?