作成したビジュアルオブジェクトの外観を変更する

色やサイズのバリエーションを追加する

Color:

プロット関数によって作成されたオブジェクトの色は,関数の 'color' キーワード引数を使用して明示的に指定できます.このカラーは,作成されるすべてのオブジェクトに均一に適用されます.

ビジュアル化全体でカラーを変更する場合は,データポイントごとにスカラー情報を指定する必要があります.関数の中には,この情報を推測しようとするものがあります.これらのスカラーは,ベクトルを持つ関数の場合はベクトルのノルムを,意味のある関数の場合はz仰角をデフォルトとします. surf()barchart() などです.

このスカラー情報は,ルックアップテーブルのカラーマップまたはLUTを使用してカラーに変換されます.可能なコロンマップのリストは次のとおりです.

accent       flag          hot      pubu     set2
autumn       gist_earth    hsv      pubugn   set3
black-white  gist_gray     jet      puor     spectral
blue-red     gist_heat     oranges  purd     spring
blues        gist_ncar     orrd     purples  summer
bone         gist_rainbow  paired   rdbu     winter
brbg         gist_stern    pastel1  rdgy     ylgnbu
bugn         gist_yarg     pastel2  rdpu     ylgn
bupu         gnbu          pink     rdylbu   ylorbr
cool         gray          piyg     rdylgn   ylorrd
copper       greens        prgn     reds
dark2        greys         prism    set1

視覚化に最も適したカラーマップを選択する最も簡単な方法は,GUIを使用することです(次項記載).カラーマップを設定するダイアログは, Colors and legends ノードにあります.

カスタム定義のカラーマップを使用するには,当分の間, カスタムカラーマップの例 に示すように,特定のコードを記述する必要があります.

字形のサイズ:

スカラー情報は,さまざまな方法で表示することもできます.例えば,データポイントに配置された字形のサイズを調整するために使用できます.

注意:クランプ:相対スケーリングまたは絶対スケーリング ポイント間隔1のライン上に6つのポイントが配置されている場合:

x = [1, 2, 3, 4, 5, 6]
y = [0, 0, 0, 0, 0, 0]
z = y

このデータセットで0.5から1までのスカラーを表す場合は,次のようになります.

s = [.5, .6, .7, .8, .9, 1]

points3d() を使ってデータセットを球体として表現し,スカラーを球体の直径にマッピングします.

from mayavi import mlab
pts = mlab.points3d(x, y, z, s)

デフォルトでは,球体の直径は 'clamped' ではありません.つまり,スカラーデータの最小値はNull直径として表され,最大値はポイント間の距離に比例します.スケーリングは相対的なものにすぎません.結果の図を参照してください.

_images/clamping_on.jpg

この動作により,すべてのデータセットに可視ポイントが与えられますが,スカラーが指定された位置と同じ単位でグリフのサイズを表す場合には望ましくないことがあります.

この場合,希望のスケール係数を指定して,自動スケールをオフにする必要があります.

pts = mlab.points3d(x, y, z, s, scale_factor=1)
_images/clamping_off.jpg

警告

以前のバージョンのMayavi(最大3.1 .0を含む)では,グリフは自動スケールされず,その結果,グリフが非常に小さいため,表示が空に見えることがあります.また,記号の最小直径は0に固定されるため,次のように指定しない限り,記号は絶対的に尺度変更されません.

pts.glyph.glyph.clamping = False
付加されたスカラーまたはベクトルのより多くの表現:
 

データにアタッチされたスカラーまたはベクトル情報を表す方法は他にもたくさんあります.例えば,スカラーデータを,例えば, WarpScalar フィルタを用いて,変位を 歪める ことができます.あるいはスカラーデータのノルムを, ExtractVectorNorm フィルタを用いた等表面を用いて可視化することができるスカラー成分を抽出することができます.

複数の数量を表示する:

iso-contoursまたはelevationを使用しながら,1つのスカラー量に関連するカラーを表示することができます.これは可能ですが,少し作業が必要です 原子軌道の例 を見てください.

単に1つの量で指定されたサイズの点を表示し,1秒ごとに色を表示する場合は,ベクトルのノルムを使用してサイズ情報を追加し,スカラーを使用して色情報を追加し, quiver3d() を作成して,対称グリフを選択し,スカラーを使用して色を表現します.

x, y, z, s, c = np.random.random((5, 10))
pts = mlab.quiver3d(x, y, z, s, s, s, scalars=c, mode='sphere')
pts.glyph.color_mode = 'color_by_scalar'
# Finally, center the glyphs on the data point
pts.glyph.glyph_source.glyph_source.center = [0, 0, 0]

オブジェクトの尺度と位置を変更する

各mlab関数は, (x, y, z) の範囲を設定することができるキーワード引数を取ります.これにより,異なる方向のスケーリングと中心のディスプレイスメントの両方を制御できます.この機能を使用する場合は,同じデータを表示する他のモジュールに同じエクステントを渡すと便利です.そうしないと,ディスプレイスメントとスケールは共有されません.

高さの値を変換して2D配列を表示する surf(), contour_surf(), および barchart() 関数も,垂直スケーリングを制御するために warp_scale パラメータを取ります.

オブジェクトのプロパティをインタラクティブに変更する

Mayavi,つまりmlabを使用すると,表示をインタラクティブに変更できます.

Mayaviパイプラインツリーを表示するには,フィギュアのツールバーにあるmayaviアイコンをクリックするか, show_pipeline() mlabコマンドを使用します.このマニュアルの他の部分で説明しているように,このダイアログを使用して各オブジェクトをダブルクリックしてそのプロパティを編集することで表示を変更したり,パイプライン上のこのアイコンを使用するか,またはパイプライン内のオブジェクトを右クリックして表示されるメニューを使用して,新しいモジュールまたはフィルタを追加できます.

_images/pipeline_and_scene.jpg

レコード機能

このダイアログの 非常に便利な機能 は,パイプラインビューのツールバーにある赤い丸ボタンを押すと表示されます.これにより,ダイアログを介してビジュアル化に対してインタラクティブに行われた変更を追跡するレコーダが開き,Pythonコードの有効な行が生成されます.パイプラインのプログラムをナビゲートする方法については, Mayaviの視覚化の構成:パイプライン を参照してください.

さらに,mlab関数が返すすべてのオブジェクトに対して, this_object.edit_traits() と入力すると,オブジェクトのプロパティをインタラクティブに編集するためのダイアログが表示されます.このコマンドを入力してもダイアログが表示されない場合は, mlabスクリプトの実行 を参照してください.

Envisage UIで mlab を使う

mlabスクリプトを作成しても,メニューをクリックして他のモジュールを使用できるように完全な予測アプリケーションを使用すると便利な場合があります.これを行うには,mlabの図を作成する前に次の操作を実行します.

from mayavi import mlab
mlab.options.backend = 'envisage'
f = mlab.figure()
# ...

これにより,デフォルトの単純なウィンドウではなく,完全なUIが得られます.