我想要做的是让脚本计算一些东西,准备一个绘图并将已经获得的结果显示为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)
Run Code Online (Sandbox Code Playgroud)
在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)
Run Code Online (Sandbox Code Playgroud)
但是,这也不起作用.它再次运行干净,但没有显示数字.它似乎只在等待用户输入时这样做.我不清楚为什么会这样,但是当将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()
Run Code Online (Sandbox Code Playgroud)
有了这个,脚本当然会在显示情节时等待用户输入,并且在用户点击进入之前不会继续计算数据.当然,这不是意图.
这可能是由不同版本的matplotlib(1.1.1和1.2.x)或不同的python版本(2.7.3和3.2.3)引起的.
有没有办法用python 2和一个稳定的(1.1.1)matplotlib完成上面的脚本(第一个)在python …