在Python/pylab中,如何关闭图形或替换图形而不必手动关闭每个图形?
我已经搜索了很多站点,使用了绘图、子绘图、一些基本动画和其他迂回方式,但是尽管使用了close()、clf()等,图形还是不会关闭 我有这样的想法:在Python/pylab中,如何关闭图形或替换图形而不必手动关闭每个图形?,python,matplotlib,plot,Python,Matplotlib,Plot,我已经搜索了很多站点,使用了绘图、子绘图、一些基本动画和其他迂回方式,但是尽管使用了close()、clf()等,图形还是不会关闭 我有这样的想法: import numpy from pylab import * import time fig = Figure() counter1 = 0 counter2 = 0 while counter1<5: counter1 = counter1+1
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()
导入numpy
从派拉布进口*
导入时间
图=图()
计数器1=0
计数器2=0
当counter1开始时,有两个次要问题:首先,您确定这就是您实际运行的代码吗?睡眠在我的pylab版本中不是一个函数,所以你的导入时间似乎与你的调用不匹配,应该是时间。睡眠(0.5)。。第二,我根本不理解你的循环。看起来您正在绘制相同的东西5次,因为计数器1没有效果,您在暂停之前将每个点添加到散点图中。您是否试图逐点绘制x_列表/y_列表
如果您使用draw()而不是show(),我认为它应该可以工作;show()是结束()的关键。以下是你想要的吗
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。我做错了什么,我只是试图逐字逐句地运行您的示例。什么也没发生。使用python 2.6.6找到它,您需要调用pylab.ion()
interactive on。我会找到答案的