mlab を使用したパイプラインの組み立て

上でレビューしたプロット関数は,Mayaviの視覚化の可能性のほんの一部を検討しています.Mayaviの力は,パイプライン自体の制御を通じてのみ発揮されます. Mayaviの概要 セクションで説明されているように,Mayaviのビジュアライゼーションは, data source オブジェクトを使用してMayaviのデータをロードし, Filters を使用してオプションでデータを変換し, モジュール を使用してビジュアライゼーションします.mlab関数は,1つの関数で複雑なパイプラインを構築し,ソース,フィルタ,モジュールを適切に選択しますが,可能なすべての組み合わせを調べることはできません.

Mlabはスクリプトからパイプラインを容易に生成する関数を含むサブモジュール pipeline を提供します.このモジュールは mlab : mayavi.pipeline でアクセスできます.または mayavi.tools.pipeline からインポートできます.

mlab プロット関数を使用すると,パイプラインが作成されます.最初に numpy 配列からソースが作成され,次にモジュール,場合によってはフィルタが追加されます.結果のパイプラインは,例えば mlab.show_pipeline コマンドを使用して見ることができます.パイプラインの各ステップを作成するために必要な関数の名前は,パイプライン上の mlab によって作成されたオブジェクトのデフォルト名に直接リンクされているので,この情報を使用して, pipeline スクリプトモジュールを使用して,まったく同じパイプラインを直接作成することができます.例として, surf() を使用した視覚化を作成します:

import numpy as np
a = np.random.random((4, 4))
from mayavi import mlab
mlab.surf(a)
mlab.show_pipeline()

次のパイプラインが作成されます.

Array2DSource
    \__ WarpScalar
            \__ PolyDataNormals
                    \__ Colors and legends
                            \__ Surface

次のコードを使用して,同じパイプラインを作成できます.

src = mlab.pipeline.array2d_source(a)
warp = mlab.pipeline.warp_scalar(src)
normals = mlab.pipeline.poly_data_normals(warp)
surf = mlab.pipeline.surface(normals)

データソース

mlab.pipeline モジュールには,配列からさまざまなデータソースを作成するための関数が含まれています.詳細については mlabパイプライン制御リファレンス に完全に文書化されています.ここでは,その可能性について簡単に説明します.

Mayaviは scalar data を持つソースと vector data を持つソースを区別しますが,より重要なのは, unconnected points のセットを作成してデータをアタッチする機能と, connected data points を作成してデータポイント間で補間できる連続的に変化する量を記述する機能です.

接続されていないソース:
暗黙的に接続されたソース:
明示的に接続されたソース:

すべての mlab.pipline のソースファクトリは,numpy配列を取り,パイプラインに追加されたMayaviソースオブジェクトを返す関数です.ただし,暗黙に接続されたソースは引数として整形式の配列を必要とします.つまり,データは入力配列の形状と同じ形状の規則的な直交グリッド上に存在することになります.つまり,配列は3次元のイメージを表します.

注釈

不規則格子または非直交格子のような,より複雑なデータ構造を作成することができる.関連項目 the section on data structures

モジュールとフィルタ

各Mayaviモジュールまたはフィルタ( モジュール および Filters )には,対応する mlab.pipeline 関数.この関数の名前は,モジュールまたはフィルタ名の大文字と小文字が交互に入れ替わることによって作成されます.したがって, ScalarCutPlanescalar_cut_plane に相当します.

一般的には mlab.pipeline モジュールとフィルタファクトリー関数は,対応するオブジェクトを作成して接続するだけです.ただし,キーワード引数として公開される追加ロジックを含めることもできます.たとえば,必要に応じて,簡単にカラーマップを設定したり,モジュールの色を指定したりできます.頻繁な操作を簡単にするための mlab インタフェースの目的に従って,キーワード引数を使用して,作成されたオブジェクトのプロパティを要件に合うように選択します.したがって,作成されたオブジェクトの属性を設定するよりも,キーワード引数を使用する方が簡単です.詳細については,docstringsを参照してください.完全で詳細な使用例については,次のサブセクションで説明します.