1

我正在编写一个 python 应用程序来模拟粒子在 3 空间中的运动。我想绘制每个步骤的位置,在应用程序运行时更新绘图,在绘图上保留过去的位置。

我想用 mayavi 做到这一点,但据我所知,不能简单地将点添加到现有的散点图中,而必须一次性添加所有点。这不是我想要的。我想一次添加几个点,而不必将所有过去的点保留在内存中以在每一步重新绘制它们。

我一直在看的函数是 plot3d()。

http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html#mayavi.mlab.points3d

关于如何用 python mayavi 做我想做的事的任何想法?是否有另一个 python 3d 绘图包可以满足我的要求?

4

1 回答 1

2

假设您将对象命名为:

mypoints = mlab.points3d(...) 

您可以在任何阶段访问当前特征:

mypoint_data = mypoints.mlab_source.get(['points'])['points']

并添加您想要的任何内容(例如:您想要添加点 0,0,1:

mypoint_data = np.vstack((mypoint_data, np.array([[0,0,1]])))
mypoints.mlab_source.set(points=mypoint_data)

如果您有标量,它们还需要使用关键字“标量”进行更新

myscalar_data = mypoints.mlab_source.get(['points'])['points']
...
mypoints.mlab_source.set(myscalar_data)

希望这会有所帮助,并且有效。

于 2013-08-19T18:47:09.660 回答