我有一个 Traits 和 Mayavi 脚本,它展示了一个 mlab 场景和几个特征编辑器。编辑器通过调用我的绘图方法来影响显示在 a 和图例(标量 LUT 管理器)surface
中的数据。quiver3d
每次更改都会触发清晰的图形并重新绘制。
从Mlab 交互式对话框示例中学习plot3d
* 用于mlab_source.set
更改数据而无需清除图形并重新绘制。在 update_plot() 中:
if self.plot is None:
self.plot = self.scene.mlab.plot3d(x, y, z, t, tube_radius=0.025, colormap='Spectral')
else:
self.plot.mlab_source.set(x=x, y=y, z=z, scalars=t)
mysurface
和quiver3d
调用的返回分别是mayavi.modules.surface.Surface
和mayavi.modules.vectors.Vectors
对象。Surface 和 LUTManager 报告没有 mlab_source: AttributeError: 'Surface'/'LUTManager' object has no attribute 'mlab_source'
。Quiver3d 报告了一个mayavi.tools.sources.MGlyphSource
1)如何更改我的数据/源surface
和scalar LUTManager
?
2) 如何正确更改箭袋的数据/来源?
当我尝试更改 quiver 的值时,我得到了TraitError: Cannot set the undefined 'u' attribute of a 'Vectors' object.
This 让我感到困惑,因为我使用了六值初始化程序。
if self.quiver is None:
self.quiver = self.scene.mlab.quiver3d(xyz[:,0], xyz[:,1], xyz[:,2],
velocity[:,0], velocity[:,1], velocity[:,2],
figure=self.scene.mayavi_scene, scale_factor = self.scale)
else:
self.quiver.mlab_source.set(x = xyz[:,0], y = xyz[:,1], z = xyz[:,2],
u = velocity[:,0], v = velocity[:,1], w = velocity[:,2])
在示例中,plot3d
返回 amayavi.modules.surface.Surface
并且它的mlab_source
对象是 a mayavi.tools.sources.MLineSource
。在文档中搜索MLineSource是徒劳的,但在外部会产生Enthought Tool Suite 3.2结果。Tool Suite 文档是最新的吗?
*self.plot、self.surface 和 self.quiver 被声明为variable = Instance(PipelineBase)
. PipelineBase
是从 导入的mayavi.core.api
。