Matlabの代わりにDreampie上でpylab使い始め。覚書。
Pythonも半年くらい触っていると大分勝手が分かってきたし、wxでいくつかまともなGUIが付いたツールも作ったし、ますますMatlab使わなくなってきた。が、最終的なFigureを、統計検定してからプレゼン用とか論文用にするクオリティでつくろうとするとやっぱりMATLABの方が速いので、結局最後はMATLAB。scipyのioモジュールをつかってpythonで計算した結果をmatファイルにして書き出してしまうとやりとりが楽。
しかし、問題は家で仕事するとライセンスの問題で、MATLABは敷居が高い。オクターブでいいかぁ。と使い始めるとなにかとWin32では不安定。とくにGNUplotが相性悪すぎるようで、変なところで苦労する。
その点、統計検定がまだ弱いような気がするので踏み出さずに来ていたが、pylabを使ってみたらmatplotlibは非常に安定していて快適だった。もうOctave使うのは諦めてpylabを極める方向で行く気持ちにだいぶ傾いた。(追記:Scipyを調べてみたら検定もかなり充実している。ますますoctaveとかscilabとかに行く気がなくなった。)
基本的にはiPythonで使うことが多いと思われるmatplotlibあるいはpylab環境ですが、Dreampieもmatplotlibがimportされたときにinteractive modeにスイッチしてくれる機能があるので、iPythonの代わりになる。個人的にはどうもiPythonがあんまり好きになれなかったため普段からインタラクティブにPythonをいじるときはDreampieを使っている。
というわけで、MATLABの代わりに使うときのコツを自分の覚書ついでで、いつものように記事にするのでした。
まずは、ネームスペースがはっきりするような例。
>>> import numpy as np
>>> x = np.arange(100)
>>> import pylab
>>> pylab.plot(x, x**2)
Dreampie上でpylabをインポートしているので勝手にインタラクティブモードになっているはずで、すでにこれでプロットが出ているはず。つまりshow()はいらない。
x**2で二乗しています。x power to the 3rd ならx**3になる。
しかしプログラムにするならどのモジュール使っているかわかるように書いた方が、読みやすいと思うけど、MATLABでプロットしながらデータを処理していくような使い方の場合は
from pylab import *
としてしまった方が便利。これでnumpyとmatplotlibが同じレベルに掘り出されて混在したネームスペース環境になり、pylab.plotとしなくてもplotでOKだし、numpy.arange(100)がarange(100)でOKになり、MATLABに近い感じになる。つまりipythonで-pylabオプション付けて起動したときと同じ環境になっているはず。
plotに限らずhistとかいろいろMATLABのように使えるので
http://matplotlib.sourceforge.net/users/shell.html
を参考に他のつかえる関数を探す。
figureを消したいときは
close()
hold()
でhold on offが切り替わる。
hold(True) またはhold(1)
でhold on
hold(False) またはhold(0)
でhold off
mat-fileの読み込みはscipyが必要。
http://docs.scipy.org/doc/scipy/reference/tutorial/io.html
import scipy.io as sio
mat_contents = sio.loadmat(r'path2matfile')
mat_contents にはpythonの辞書形式で入るので、変数の名前がaならば
mat_contents['a']
のようにして参照する。
image, imagescの代わりはimshow
data = random((100,100))
imshow(data)
とするとJetのカラーマップで表示される。
imshow(data, cmap=cm.gray)
とするとグレースケールになり
imshow(data, cmap=cm.jet)
で戻せる。
追記:Pyscripter上でPylabを使ってみたがこれがまた素晴らしかった。GeanyよりもエディタとしてもPyscripterはPythonに特化している分、気が利いていて良い感じ。Geany+Dreampieから乗り換え中。
« LibreOffice 3.3.2を英語版Windows 7にインストールする | トップページ | PyFFmpeg 2.1beta win32使い方メモ。 »
「パソコン・インターネット」カテゴリの記事
- Linuxのデスクトップ環境にログインした時にxmodmapコマンド実行(2023.12.30)
- youtube-dlでrumbleをダウンロード(2023.12.06)
- Pop!_OSのアプデがfcitxを繰り返し葬る件(2023.05.22)
- vue.jsで遊んでみる(2023.01.02)
- 『将棋神やねうら王』のオープンソース版MyShogiをLinux Mint 19.1でビルドしてみた件(2019.03.24)
「学問・資格」カテゴリの記事
- ウイルスを殺すのは簡単。人に無害でやるのが難しいの!! 二酸化塩素「こう?えい!」(2020.03.11)
- 老化はエピジェネティクスな影響が積り、スプライシングに影響を与えるのかも(2017.11.20)
- シネッセンス細胞がアツい。不老不死とハゲの治療が同時に可能か?(2017.11.18)
- 古めの論文でテキスト選択がおかしい時の対処法(2017.09.08)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
« LibreOffice 3.3.2を英語版Windows 7にインストールする | トップページ | PyFFmpeg 2.1beta win32使い方メモ。 »
コメント