我试图做的是让一个脚本计算一些东西,准备绘制并显示已经获得的结果作为一个pylab.figure - 在Python 2(具体来说是Python 2.7)中使用稳定的matplotlib(即1.1.1)。
在Python 3中(带有matplotlib git构建...版本1.2.x),这可以正常工作。作为一个简单的例子(通过time.sleep()模拟长时间计算),请考虑。
可能是由于matplotlib的不同版本(1.1.1和1.2.x)或不同的Python版本(2.7.3和3.2.3)引起的。
是否有办法在Python 2中使用稳定的(1.1.1)matplotlib实现上述Python 3、matplotlib 1.2.x中脚本的功能: - 在循环或迭代函数中计算数据(这需要一段时间,在上面的示例中通过time.sleep()模拟),并且 - (同时仍在计算中)显示已经在先前迭代中计算出的内容 - 而且不必让用户不断按回车键才能进行计算
谢谢;任何帮助都将不胜感激...
在Python 3中(带有matplotlib git构建...版本1.2.x),这可以正常工作。作为一个简单的例子(通过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,带有matplotlib 1.1.1)中,该代码可以干净地运行而不出现错误,但不显示图形。在Python2解释器中进行少量试验和错误似乎表明需要用pylab.show()替换pylab.draw();只需执行一次即可(不像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)引起的。
是否有办法在Python 2中使用稳定的(1.1.1)matplotlib实现上述Python 3、matplotlib 1.2.x中脚本的功能: - 在循环或迭代函数中计算数据(这需要一段时间,在上面的示例中通过time.sleep()模拟),并且 - (同时仍在计算中)显示已经在先前迭代中计算出的内容 - 而且不必让用户不断按回车键才能进行计算
谢谢;任何帮助都将不胜感激...