我正在编写一个 python 应用程序来模拟 3 空间中粒子的运动。我想绘制每个步骤的位置,在应用程序运行时更新绘图,并在绘图上保留过去的位置。
我想用 mayavi 来做到这一点,但据我所知,不能简单地将点添加到现有的散点图中,而是必须一次性添加所有点。这不是我想要的。我想一次添加几个点,而不必将所有过去的点保留在内存中以便在每一步中重新绘制它们。
我一直在研究的函数是plot3d()。
http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html#mayavi.mlab.points3d
关于如何使用 python mayavi 做我想做的事情有什么想法吗?是否有另一个 python 3d 绘图包可以满足我的要求?
最佳答案
假设你命名了你的对象:
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)
希望这有帮助并且有效。
关于Python Mayavi : Adding points to a 3d scatter plot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18157567/