mlab シーンといくつかの特性エディタを提示する特性と Mayavi スクリプトがあります。エディターは、描画メソッドを呼び出すことで、 surface
、quiver3d
および凡例 (スカラー LUT マネージャー) に表示されるデータに影響を与えます。変更するたびに、図がクリアされ、再描画されます。
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
surface
1)およびのデータ/ソースを変更するにはどうすればよいscalar LUTManager
ですか?
2) 震えのデータ/ソースを正しく変更するにはどうすればよいですか?
quiver の値を変更しようとすると、 6 値の初期化子TraitError: Cannot set the undefined 'u' attribute of a 'Vectors' object.
を使用したため、これは困惑します。
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])
この例では、は a をplot3d
返し、mayavi.modules.surface.Surface
そのmlab_source
オブジェクトは amayavi.tools.sources.MLineSource
です。ドキュメントでMLineSourceを検索しても無駄ですが、外部的にはEnthought Tool Suite 3.2の結果が得られます。ツール スイートのドキュメントは最新ですか?
*self.plot、self.surface、self.quiver は として宣言されていvariable = Instance(PipelineBase)
ます。PipelineBase
からインポートされmayavi.core.api
ます。