matplotlib触ってみた
ずっと触ろうと思ってたが放置してたmatplotlibを触ってみた。
以下の記事を参考にしながら書いてみた。
- 良いもの。悪いもの。:matplotlibの簡単な説明
- http://handasse.blogspot.com/2007/06/matplotlib.html
- 良いもの。悪いもの。:matplotlibによる線種や色などの指定方法
- http://handasse.blogspot.com/2007/06/matplotlib_28.html
まず使うにはpythonと、python-matplotlibのインストールが必要。うちの環境(Ubuntu 9.04)ではさらにpython-tkも入れる必要があった。
まずplot()で描画を行う。show()で描画した画面を表示する。前に描画した結果を消したければclf()を実行する。
plot関数には描画するデータ、そして描画オプションをつける。通常は線で結ばれるっぽいけど'.'オプションをつけると点のみ描画される。
axis関数は描画するx軸、y軸の範囲を設定する。plot関数の後に実行しないとダメみたい。axix()の代わりにxlim(),ylim()でもOK.
ソース
from pylab import * points = [ [1,2],[2,3],[3,1],[-2,-1],[-3,-3],[-2,-4] ] xs = [] ys = [] for (x, y) in points: xs.append(x) ys.append(y) plot(xs,ys,".") axis([-5,5,-5,5]) show()
課題
- Rでもこんな風に地道に点を与えて描画できるんですかね?
- [ ( 1,2,3 ), ( 4,5,6 ) ]->[ (1,4), (2,5), (3,6) ]と変換するにはzip()使えばいいんだけど、上の例ではzip関数つかっても[ [1,2,3,-2,-3,-2], [2,..]]と変換できないっぽいんですが。
- 関係ないけどUbuntu 9.04のOpera,Fxが重すぎて日記更新もままならん。しかもCore2 Duo E6600(2.4GHz)なのに1.6GHzとか表記されてるし。何だこりゃ。->これかhttp://viva-ubuntu.net/?p=1555
追記
1に関して。pointsでできるらしい(thx syou6162!)
2に関して。こうすればうまくいく。
>>> points = [ [1,2],[2,3],[3,1],[-2,-1],[-3,-3],[-2,-4] ] >>> (xs,ys) = zip(*points) (1, 2, 3, -2, -3, -2) (2, 3, 1, -1, -3, -4)
zipにリスト全体渡しちゃだめですね。
3に関して。VGAドライバが腐ってるのとCPU周波数コントロールができてないの2点。
http://viva-ubuntu.net/?p=1555
http://blog.miraclelinux.com/asianux/2009/07/ubuntu-904-wi-2.html