2007年6月27日水曜日

matplotlibで3次元プロット

このブログ記事をはてなブックマークに追加

一昔前は2次元しか扱えなかったが、最近では3次元プロットも利用できるmatplotlib。Cookbook/Matplotlib/mplot3Dあたりを読めばなんとなく使い方はわかる。利用するには、以下のようにモジュールを読み込んでおく。

import pylab as p import matplotlib.axes3d as p3

ネットで調べてみたらscipy+matplotlibによる3元連立常微分方程式の軌道について書かれているサイトを発見。ふむふむ、参考になる。Gnuplot.pyは知らなかったな。でも最終更新が2003年と古い。numpyではなく古いNumericを使っているっぽい。やはり、matplotlibがいいなぁ。でも、plot3Dだとうまくいかないようなことが書かれている。そうなのか…と思って試してみた。例示されているコード中のscatter3Dをplot3Dに変更するだけ。見た目はまったく問題ないように見えるけど、何か問題があるのかな? バージョンの違い? どちらにしろ自分としてはこれで十分かな。

余談だが、現時点で最新のscipy-0.5.2とnumpy-1.0.3の組み合わせでは正常にコンパイルできない。

svc co http://svn.scipy.org/svn/numpy/trunk numpy svc co http://svn.scipy.org/svn/scipy/trunk scipy

上記のようにsvcで最新のバージョンを取ってくるか、numpy-1.0.2を利用しなければならない。

2 コメント:

Yasuto Takenaka さんのコメント...

Plot3Dで動くとのご指摘ありがとうございます。こちらが使ったバージョンは少し古くて、scipy 0.51 + matplotlib 0.87だったです。動作確認したけど、やはりうちでは動かなかった。バージョンの違いなのかもしれませんね。

nox さんのコメント...

コメントありがとうございます。

こちらは最新の0.90.1を利用しWindows XP、Fedora Core 3および6で正常動作するのを確認しました。以前は0.85を使っていたのですが、そのバージョンではaxes3dは入っていませんでした。バージョンが変わってaxes3dにもかなり変更が入っているようです。