我正在编写一个python应用程序来模拟三维空间中粒子的运动。我想绘制每个步骤的位置,在应用程序运行时更新绘图,保留过去的位置。
我想和mayavi一起做这件事,但就我所知,人们不能简单地将点添加到现有的散点图中,但必须一次性添加所有点。这不是我想要的。我想一次添加几个点,而不必将所有过去的点保留在内存中,以便在每一步重绘它们。
我一直在看的函数是plot3d()。
http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html#mayavi.mlab.points3d
关于如何用python mayavi做我想做的事的任何想法?还有另一个python 3d绘图包可以做我想要的吗?
答案 0 :(得分: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)
希望这会有所帮助,并且有效。