0

所以我有一个 3D 图,它是一个散点图,通过数据框更新一个点。我让它每 0.1 秒添加一个新点。这是我的代码:

ion()
fig = figure()
ax = fig.add_subplot(111, projection='3d')
count = 0
plotting = True
while plotting:
    df2 = df.ix[count]
    count += 1
    xs = df2['x.mean']
    ys = df2['y.mean']
    zs = df2['z.mean']
    t = df2['time']
    ax.scatter(xs, ys, zs)
    ax.set_xlabel('X Label')
    ax.set_ylabel('Y Label')
    ax.set_zlabel('Z Label')
    ax.set_title(t)
    draw()
    pause(0.01)
    if count > 50:
        plotting = False
ioff()
show()

我怎样才能让它只在实时更新的图表上显示新点。现在它从一个点开始,然后添加另一个点,直到图表上总共有 50 个点。

所以我想要的是在图表上永远不会有超过一个点,并且只是让那个点随着它的迭代而改变。我怎样才能做到这一点?

4

1 回答 1

2
ion()
fig = figure()
ax = fig.add_subplot(111, projection='3d')
count = 0
plotting = True
# doesn't need to be in loop
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

lin = None
while plotting:
    df2 = df.ix[count]
    count += 1
    xs = df2['x.mean']
    ys = df2['y.mean']
    zs = df2['z.mean']
    t = df2['time']
    if lin is not None:
        lin.remove()
    lin = ax.scatter(xs, ys, zs)
    ax.set_title(t)
    draw()
    pause(0.01)
    if count > 50:
        plotting = False
ioff()
show()

原则上,您也可以使用法线plot代替scatter并更新循环中的数据,但 3D 更新可能很不稳定/可能需要稍微戳一下内部结构。

于 2013-05-08T19:36:22.737 回答