この間から、Pythonのグラフ描画ライブラリであるMatplotlibを使ってNetworkXのアニメーションを作ってみています。
このMatplotlibがかなり高機能で、物理シミュレーションの可視化にも便利なんじゃないかな~と思い始めてきました。
ギャラリーを見ると様々なグラフがありますし、サンプルコードもあるので再現も楽そうです。
まず、また、一般的に物理屋さんが使っているgnuplotと違って、プログラミング言語のPythonの拡張機能であるためコードの再利用が簡単な点にも惹かれます。
「Matplotlib でグラフプログラミング【Python】」というスレにgnuplotとmatplotlibの比較がありました。
3 :デフォルトの名無しさん:2009/10/24(土) 21:07:30
http://pc12.2ch.net/test/read.cgi/unix/1164719425/708 より:
gnuplot vs matplotlib
2Dプロット系: "できること" で言えば、パイチャートなどがデフォルト
でプロットできる matplotlib の方が上。ちょっと混み入った設定や
アノテーションの加え方も matplotlib の方が楽。
3Dプロット系: 完成度と速度の面で gnuplot の勝ち。
プロットプログラムの再利用性: これは matplotlib の余裕勝ち。
見た目の綺麗さ: matplotlibではデフォでグラフにアンチエイリアスや
ヒンティングがかかっている。gnuplot だと wx 末端を使えば
matplotlibのそれとほとんど同様になるが、他の末端も
含めて評価するとmatplotlibに軍配が上がる。
数式: TeXのフォントがデフォルトで入っていて、インストール直後
LaTeXのインストール無しでも即効TeXと同じように書けるので matplotlib の勝ち。
結論としては、多種多様のプロットを生成したいのであれば、
matplotlibを使った方が長期的に見て効率が良さそう。特に python 使い
であれば、断然 matplotlib の方が有利。それと、gnuplotはあまり融通
が効かず、ちょっとした変更が時に面倒だったり、"できそうでできない"
ことが何気に結構あったりしたが、matplotlibなら、その心配は無さそう。
しかし、「簡単にsin(x)のプロットが作れればいいやー」程度のユーザーなら、
gnuplotでいいと思うし、そういった単純なグラフなら gnuplot の方が簡単。
実は私はgnuplotになじめず、ほとんどグラフの描画には統計解析ソフトのRを使っていました。それと比べても、標準でTeXの数式が書ける点、(個人的に)Pythonのほうがプログラムとしてコードが読みやすく用途が限られない点でいいと思います。
また、おしゃれなグラフのテンプレートも用意されています。XKCD(棒人間のWebコミックらしいです)風にプロットする機能などがあるようです。
XKCD Plots in Matplotlib: Going the Whole Way
ちなみに、これをヒストグラムに試したところ、めっちゃ邪悪な感じになってしまいました。
学業的にはアレかもしれませんが、こういう遊びのある機能が用意されてるのもクールですね!ヒマがあれば他のも試してみたいと思います。