我想做的是让脚本计算一些东西,准备一个图并将已经获得的结果显示为 pylab.figure - 在 python 2(特别是 python 2.7)中,具有稳定的 matplotlib(即 1.1.1)。
在 python 3(带有 matplotlib git build ... 版本 1.2.x 的 python 3.2.3)中,这工作正常。作为一个简单的例子(通过 time.sleep() 模拟一个冗长的计算)考虑
import pylab
import time
import random
dat=[0,1]
pylab.plot(dat)
pylab.ion()
pylab.draw()
for i in range (18):
dat.append(random.uniform(0,1))
pylab.plot(dat)
pylab.draw()
time.sleep(1)
在 python 2(版本 2.7.3 vith matplotlib 1.1.1)中,代码运行干净,没有错误,但没有显示图形。python2解释器的一些试验和错误似乎建议用pylab.show()替换pylab.draw();这样做一次显然就足够了(不像在每次更改/添加到情节后调用它)。因此:
import pylab
import time
import random
dat=[0,1]
pylab.plot(dat)
pylab.ion()
pylab.show()
for i in range (18):
dat.append(random.uniform(0,1))
pylab.plot(dat)
#pylab.draw()
time.sleep(1)
但是,这也不起作用。同样,它运行干净但不显示图形。似乎只有在等待用户输入时才会这样做。我不清楚这是为什么,但是当将 raw_input() 添加到循环中时,最终会显示该图
import pylab
import time
import random
dat=[0,1]
pylab.plot(dat)
pylab.ion()
pylab.show()
for i in range (18):
dat.append(random.uniform(0,1))
pylab.plot(dat)
#pylab.draw()
time.sleep(1)
raw_input()
有了这个,脚本当然会在显示绘图时等待用户输入,并且在用户点击输入之前不会继续计算数据。当然,这不是本意。
这可能是由不同版本的 matplotlib(1.1.1 和 1.2.x)或不同的 python 版本(2.7.3 和 3.2.3)引起的。
有没有什么方法可以用稳定的(1.1.1)matplotlib 来完成上面的脚本(第一个)在 python 3,matplotlib 1.2.x 中所做的事情: - 计算数据(在上面的例子中需要一段时间由 time.sleep()) 在循环或迭代函数中模拟,并且 - (同时仍在计算)显示在先前迭代中已经计算的内容 - 并且不打扰用户不断按 Enter 以继续计算
谢谢; 我将不胜感激任何帮助...