我正在尝试创建一个程序,该程序读取一些随机生成的数据,即xax和yax列表,并以动画方式实时绘制它们。这是代码:
from matplotlib.pylab import *
import time, random
ion()
xax = []
yax = []
axes
for j in range (0,20):
xax.append(j)
r = random.randrange(0, 20)
yax.append(r)
maxx = max(xax)
maxy = max(yax)
print maxx, maxy
axis([0,maxx,0,maxy])
line, = plot(xax[0],yax[0])
draw()
for i in xax:
print i, yax[i]
line.set_ydata(yax[i])
draw()
根据问题评论和聊天中的讨论,尝试以下操作更新一行,为循环的每次迭代扩展它。原始代码中的问题是一次只画一个点,所以显然没有在屏幕上画线。在下文中,我使用numpy.append
(matplotlib.pylab
的一部分)在循环的每次迭代中扩展x和y数据。
from matplotlib.pylab import *
import time, random
ion()
xax = range(0, 20)
yax = [random.randrange(0, 20) for _ range(0, 20)]
axes()
xlim(xmax=max(xax))
ylim(ymax=max(yax))
line, = plot(xax[0], yax[0])
for i, x in enumerate(xax):
line.set_ydata(append(line.get_ydata(), yax[i]))
line.set_xdata(append(line.get_xdata(), x))
draw()
time.sleep(1.)