3次元のグラデーション付き等高線図を何で描くか?
Plotmtv,xplot,gnuplot,vis5d
右の図のようなグラフを描きたくなることがあります。
これは、DNA のまわりの静電ポテンシャルと、
その回りでブラウン運動している対イオンの分布を
あらわしたものです。
簡単にいえば、
3次元のグラデーション付き等高線図を何で描くか?
というのが今回のお題です。
gnuplot は、2次元のグラフを描くには申し分のないソフトです。
でも、今回のように、ポテンシャル面にグラデーションをつけたい場合に
どうすればいいのかよくわからんかった。
そこで、xplot を考えました。
富士山の立体図
がなかなか強烈な
伊藤先生のページ
をもとに使ってみたのですが、なんと座標軸を書き込めない。
因みに、上のページで述べている xplot のソースは
Linux NOW から
辿れます(上のページではCD-ROMが紹介されていたので)。それから、
xplot のソースを探しているときに、FreeBSD のパッケージで同名のものを
見つけましたが、そちらは2次元プロットを作成するソフトです。
で、とにかく、次に考えたのが
vis5d という
5次元のグリッドデータを描くソフトです。これは Web ページで見ても
強烈で、楽しそうなんだけど、で、うちでも Mesa-lib を入れて
コンパイルしたら出来て感動したのだけれど、どうも気象に特化している
ようで、すごすぎてわけわかんない。
ということで、
PlotMTV というのがいけてることが判明しました。
Plotmtv.1.4.0.tar.Z をとってきて make 一発。いろいろ
warning が出ますが、気にせずインストールしてしまいました(笑)。
このソフトの特徴は、
・グリッドデータの表示が得意
・データを最後までアスキーファイルで扱える
・操作が多機能の割にシンプル
・細かい設定は 環境変数+起動時の引数+データファイル でする
といったところでしょうか。
スクリーンショット
このグラフを作った元データ
もフォーマットの参考に置いておきます。
ソースツリーの下の Docs 以下に
plotmtv.man
DataFormat.ps
があります。最初のものが man ファイルで、次のものがデータファイルの
フォーマットの解説です。後者はデカいので、プリントアウトに苦労しました
が、とにかくこの2つを丁寧に読めば、かなり使えることがわかるでしょう。
話がそれますが、gnu man を使っている場合は上のファイルは
% man -t ./plotmtv.man > plotmtv.ps
てな感じでポストスクリプトに整形して出力することができます。
スクリーンショットの上にある様々なボタンをクリックすることによって、
表示を変える(2D - 3D 切替えなど)できます。気に入った表示になった
ところで、「Print to File」すれば、そのディレクトリに
dataplot.ps というファイルが出来るので、それをリネームしてもいいし、
最初からファイル名を指定することもできます。
上のスクリーンショットは、曲面1つ、平面1つ、直線2本から成っていますが、
これは、plotmtv を起動するときに -plotall をつけると描いてくれます。
他には、-multi で一つのウインドウに複数のグラフを描いてくれたりも
します。
出力したグラフを論文などに張り付ける場合、TeX の
figure 環境などを使うわけですが、plotmtvのグラフは
600x800 ピクセルの ポストスクリプトに固定されている?ため、
余分な空白が気になる場合があります。それには、出力した *.ps ファイルの
%%BoundingBox: 0 0 600 800
という部分を、たとえば
%%BoundingBox: 0 120 600 700
といったように書き換えることによって、BoundingBox の大きさを調節
すれば望みの範囲を論文に張り付けることが出来ます。
唯一の難点は、グラフの軸ラベルに使うフォントが固定であることです。
つまり、上のグラフの z 軸のラベルを e Φ/ kT と描きたいのですが、
Φに出来ない。。
追記:
もっとも, 最近は gnuplot の方を良く使っています.
いろんな機能を組み合わせれば, こんな図も描けます.