mlabスクリプトの実行¶
Mlabは他のMayavi同様,インタラクティブなアプリケーションです.インタラクティブ環境(次の段落を参照)に入っていない場合は, show()
関数を使用して,図形やその他の図形要素を操作する必要があります.例えば,スクリプトを作成している場合,1つまたは複数の図形を表示し,ユーザがそれらを操作できるようにするには,その都度 show()
を呼び出す必要があります.
対話的にmlabを使用する¶
IPython_ を使用すると, mlab 命令をインタラクティブに実行できます.また, IPython_'s %run
コマンドを使用してスクリプト内で実行することもできます.
In [1]: %run my_script
--gui=qt オプションを指定して IPython_ を起動する必要があります.この環境では,プロットコマンドはインタラクティブです.これらのコマンドは図形に即座に影響を与え, show()
関数を使用する必要性を軽減します.
mlabは,mayavi2アプリケーションのPythonシェル,またはwxPythonベースのアプリケーション(他のEnvisageベースのアプリケーションやSPEなど,Stani氏のPython Editor)の任意のインタラクティブPythonシェルで,インタラクティブに使用することもできます.
Matplotlibと一緒に使用する¶
IPythonでMatplotlibの対話型プロットをMayaviのmlabで使用する場合は,次の操作を実行します.
次のコマンドでIPythonを起動します.
$ ipython --matplotlib=qtもしくは, --gui=qt オプションを指定してIPythonを起動します.
$ ipython --gui=qtおよびmatplotlibモジュールをインポートする 前 に,次のPythonコマンドを入力します.
>>> import matplotlib >>> matplotlib.use('Qt4Agg') >>> matplotlib.interactive(True)以下のようにIPythonに対して
--pylab
オプションを使うこともできます.$ ipython --pylab=qt
デフォルトでIPythonでmatplotlibとmlabを一緒に動作させるには,デフォルトのmatplotlibバックエンドを変更します. ~/matplotlib/matplotlibrc に次の行を追加します.
backend : Qt4Agg
何らかの理由でQtバックエンドが動作しない場合は,wxバックエンドを使用します.これを行うには,次の操作を行います.
$ ETS_TOOLKIT=wx
$ ipython --gui=wx
Mayaviに関する限り, ETS_TOOLKIT
環境変数を使用して適切なツールキットを選択します.これが設定されていない場合,サポートされているツールキットは,成功するまでバージョン依存の順序で試行されます. traitsui の最近のリリースでは,デフォルトはQtです. ETS_TOOLKIT
のオプションは以下のとおりです.
qt4: Qtバックエンドを使う場合(PySideまたはPyQt4),
wx: wxPythonを使うには
null:UI ツールキットを使用しない.
スクリプト内¶
mlabコマンドをファイルに書き込み,スクリプトを作成することができます.このスクリプトをMayaviアプリケーションにロードするには, File->Open file メニューエントリを使用し, File->Refresh code メニューエントリを使用するか,または Control-r
キーを押します.また, -x
コマンドラインスイッチを使用して,Mayaviアプリケーションの起動中に実行することもできます.
前述したように,インタラクティブ環境の外で実行する場合は,たとえば python myscript.py を使用します.スクリプトを一時停止し,ユーザが図を操作できるようにするには, show()
関数(上のデモに示されているように)を呼び出す必要があります.
次のように show()
を使用して関数を修飾し,event-loopで実行させることもできます.これにより,柔軟性が増します.
from mayavi import mlab
from numpy import random
@mlab.show
def image():
mlab.imshow(random.random((10, 10)))
このデコレータにより, image 関数が呼び出されるたびに, mlab は, image 関数を実行する前に対話環境が実行されていることを確認します.対話型環境が実行されていない場合は, mlab が起動し,イメージ関数は閉じられるまで戻りません.