0

使用以下代码,我试图将点迭代地添加到图表中。因为我在 OSX 上,所以我没有使用 blit=True。我可以在原始点上得到一个点来绘制,并且可以看到我的更新函数的输出(从生成器馈送)。我还可以看到我的坐标被附加到要绘制的坐标数组中。在可视化生成/更新的点时我缺少什么?

由 data_gen() 调用的 stromboli 函数返回一对坐标。对于所有意图和目的,它可能是一个随机的 x,y。

#Visualization Imports
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def update(coord):
    print coord[0], coord[1]
    pt.set_xdata(numpy.append(pt.get_xdata(),coord[0]))
    pt.set_ydata(numpy.append(pt.get_ydata(),coord[1]))
    print pt.get_xdata()
    return pt,

def data_gen():
   while True:
        yield stromboli(args.velocity)

#Visualization
fig = plt.figure()
ax = plt.axes()
pt, = ax.plot([], [],'ro')

ani = animation.FuncAnimation(fig, update, data_gen, interval=100)

plt.plot(0,0,'b*')
plt.show()
4

1 回答 1

1

我怀疑你可能会通过有效的闭包得到一些有趣的东西(你是在交互式环境中运行它吗?),因为pt它将从之前的代码执行中定义,这就是def update运行时被抓取的东西。然后,您制作了一个新版本,pt但这不是更新的内容update

要么移动到定义pt, = ax.plot([],[],'ro') 之上update,要么尝试pt作为参数传入。

前任:

def update(coord,pt):
    print coord[0], coord[1]
    pt.set_xdata(numpy.append(pt.get_xdata(),coord[0]))
    pt.set_ydata(numpy.append(pt.get_ydata(),coord[1]))
    print pt.get_xdata()
    return pt,

....

ani = animation.FuncAnimation(fig, update, data_gen, fargs = (pt,),interval=100)
于 2012-10-24T02:11:25.110 回答