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)应该可以解决您的问题.
有反向问题,似乎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)