如何在不必手动关闭Python / pylab中的每个图形的情况下关闭图形或替换图形?

时间:2011-07-13 00:25:31

标签: python matplotlib plot

我搜索了很多网站,使用了情节,子图,一些基本动画和其他迂回方式,但是尽管使用了close(),clf()等,这个数字也不会关闭。

我有这样的事情:

    import numpy
    from pylab import *
    import time
    fig = Figure() 
    counter1 = 0
    counter2 = 0

    while counter1<5:
            counter1 = counter1+1
            while counter2<10:
                    scatter(x_list[counter2], y_list[counter2], hold = 'on') ### x_list and y_list are just lists of random numbers
                    counter2 = counter2 + 1
            show()
            sleep(0.5)
            close()

我正在寻找任何解决方案,如上所示。情节,子情节,动画......

1 个答案:

答案 0 :(得分:3)

要开始的两个方面问题:首先,您确定这是您实际运行的代码吗? sleep在我的pylab版本中不是一个函数,所以你的导入时间似乎与你的调用不匹配,应该是time.sleep(0.5)..其次,我根本不理解你的循环。看起来你正在绘制相同的东西5次,因为counter1没有效果,你在暂停之前将每个点添加到散点图。您是否尝试逐点绘制x_list / y_list?

如果你使用draw()而不是show()我认为它应该工作; show()是持有close()的东西。以下是你想要的东西吗?

import time
from pylab import *
ion()

# test data
x = arange(0, 10, 0.5)
y = 10*x+exp(x)*abs(cos(x))

for j in range(len(x)):
    if j > 0: scatter(x[:j], y[:j])
    # assuming we don't want the limits to change
    xlim(0, 10)
    ylim(0, 1000)
    draw()
    time.sleep(2)
    #close()

请注意,我已经注释掉了close(),因为这样可以产生一个漂亮的动画。如果你留下它,它会继续关闭并重新打开窗口,这可能是你想要的,但对我的眼睛看起来并不是很有用。当然是YMMV。