新しいpylabマジックの柔軟性
ipython1.0になって、pylabが柔軟になりました。pylabというのはnumpy(数値演算の為のライブラリ)とmatplotlib(グラフ描画の為のライブラリ)を使いやすくするための機能で、私自身はこれまで、ほとんどの場合、
ipython notebook --pylab=inline
というコマンドでipython notebookを立ち上げていました。 このようにするとグラフがnotebook内に描画されました。
また、稀に
ipython notebook --pylab=qt
とする事もありました。この場合、別窓でグラフが現れます。 この窓はインタラクティブにグラフの見た目を編集する事ができますし、3Dプロットの際には見る角度を変えながら形を眺める事もできます。また、アニメーションを見ることもできます。
ところが、今度の新しいバージョンでは、これらの切り替えがノーブック内で可能になりました。 残念ながら、インタラクティブな描画を静的なhtml上で示す事は出来ないですが、Webaggとipython notebookとの統合の実現によって、この問題も将来的には解決するのでしょう。
%pylab inline --no-import-all
お勧めの方法は、 >ipython notebook
のみで立ち上げ、上の一文を最初に実行する事です。
勿論、上級者は profileを設定して、Startup Fileをカスタマイズ カスタマイズすればよいでしょう。
%pylabが何をしているのかは ドキュメント に以下のように記されています。
import numpy import matplotlib from matplotlib import pylab, mlab, pyplot np = numpy plt = pyplot from IPython.display import display from IPython.core.pylabtools import figsize, getfigs from pylab import * from numpy import *
最後の2行があるので、
x=np.linspace(0,2*np.pi)
plt.plot(x,np.sin(x))
x=linspace(0,2*pi) plot(x,sin(x))
とソースを簡略化できる事が分かります。 しかしながら、このようにするとpyplotとnumpyに属しているコマンド名が他の名前と衝突してしまう可能性があります。 そこで、最後の2行を実行しないために >--no-import-all
とすればOKです。
また、inlineはグラフをnotebook内に描画するためのものです。
描画方法の切り替え
別窓(qt)で見たい場合には
%matplotlib qt
とすればよくなりました。
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))
display(plt.gcf())
上のグラフはqt窓内で編集した結果をdisplayという命令で取り込んだものです。
その様子をキャプチャーしたので、貼り付けておきます。
このように簡単にノートブックに取り込む事ができます。
再びinlineに戻したければ
%matplotlib inline
とすればOKです。
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))
plt.xlabel(u'角度(ラジアン)')
plt.ylabel(u'正弦、余弦')
plt.title(u'正弦関数と余弦関数の交点')
plt.xlim(0.75,0.82)
plt.ylim(0.69,0.725)
このように、inlineでも、xlabel,ylabel,titleを設定し、xlim,ylimを何度も設定しながら描画を繰り返せば、別窓と同様のグラフを得ることはできます。 また、編集方法が残るのはメリットです。
切り替えが可能になりましたので、qtでインタラクティブに眺め、inlineでノートブックに残すという事も出来ます。
displayで取り込むと、別窓のグラフの背景の灰色がそのまま取り込まれて気持ち悪いと思われるかも知れません。私はそうだったので、matplotlibrcを編集し、 >figure.facecolor : white
としました。 また、グラフ内で日本語フォントを使うために、 >font.family : IPAexGothic
としています。
matplotlibrcの編集については、 matplotlibのドキュメント を、日本語フォントについては私の 別ページ を見てください。
Startupを使う必要はありませんでしたので、修正しました。Profileの設定については、9月2日に投稿しました。
返信削除pylab=qtでの編集画面を入れました。
返信削除