読者です 読者をやめる 読者になる 読者になる

計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

ipythonでmatplotlibのグラフをinline表示する

Jupyter qtconsole and notebook

Ubuntuでcondaコマンドを使ってipython qtconsoleとipython notebookを入れた。両方共jupyterというプロジェクト?になっているらしい。matplotlibのグラフをinline表示したいときのコマンド

$ ipython qtconsole --matplotlib inline

これが使えない。qtconsoleでもnotebookでも、起動してから

%matplotlib inline

とコマンドを打てば、inline表示が有効になる。

毎回コマンドを打つのめんどくさい

自動でinline表示モードにしたい。
参考サイト

ArchLinuxでIPython環境(Jupiter & QtConsole)をpyvenvで構築する
www.progresslog.net

プロファイルを設定していなければ、プロファイルを作る。プロファイルの名前をつけることもできるがとりあえずここは、デフォルトで。

$ ipython profile create

これで~/.ipython/profile_defaultipython_config.pyというファイルができるはずなのでこれを開いて編集。

# lines of code to run at IPython startup.
# c.InteractiveShellApp.exec_lines = traitlets.Undefined
c.InteractiveShellApp.exec_lines = ['%matplotlib inline']

上記の部分を探して、c.InteractiveShellApp.exec_lines = ['%matplotlib inline']を書き込む。リスト形式で。
この部分が起動時に読み込まれる。

起動時に読み込ませるのなら、~/.ipython/profile_default/startupinline.pyとか適当にファイルを用意して、%matplotlib inlineって書いておいてもいいんじゃないかと思って試してみたらダメだった。ipython_config.pyに設定しよう。

----- 2015/01/10 追記 ----- コメントから
inline.pyではなくipythonのコマンドはinline.ipyというように拡張子をipyにするとちゃんと読み込まれる
----- 追記終了 -----

これでqtconsoleやnotebookで自動的にinline表示が有効になる。ただし、ターミナル上でipythonを実行すると

UsageError: Invalid GUI request u'inline', valid ones are: pyglet, osx, qt5, qt, glut, gtk, gtk3, tk, wx

というエラーが出る。エラーが出ても起動してくれないわけではないので使用可能。でもこのままではmatplotlibのグラフが表示されない。
ターミナルのipython上で%matplotlib qtとかやって設定しなおせば特に問題ない。

Ubuntuではqtconsoleをメインにしてターミナルのipythonは使わない予定なのでとりあえずこれでよし。