linuxBean14.04(71)IPython3.2.1のNotebookを使う

2015-09-22

旧ブログ

t f B! P L

前の関連記事:linuxBean14.04(70)Jupyter NotebookをPyCharm4.5で使う


前回JupyterをインストールしてPyCharm4.5から使えるようにしたIPython3.2.1のNotebookをいろいろ使ってみます。(2015.9.23追記。PyCharm4.5からIPython Notebookを使うのは断念しましたがこの記事の設定はJupyter Notebookでも有効です。)

IPythonの設定ファイルを作成して%matplotlib inlineの実行を省略する


%matplotlib inline を毎回実行するのは面倒なので設定ファイルで自動実行するようにします。

まずデフォルト設定ファイルを作成します。

ipython profile create

Terminalでこのコマンドを実行すると~/.ipython/profile_defaultに5個のconfigファイルが作成されます。

(linuxBean14.04(72)Anacondaで科学技術系Pythonパッケージを一括インストールするでAnacondaでインストールしたJupyter Notebookではipython_config.pyとipython_kernel_config.pyの二つだけ作成されました。)
いずれのファイルもc = get_config() というコマンド以外すべてコメントアウトされています。
# Configure matplotlib for interactive use with the default matplotlib backend.
# c.InteractiveShellApp.matplotlib = None
ipython_config.pyの57行目をコメントアウトをはずしてNoneを"inline"にして書き加えます。
# Configure matplotlib for interactive use with the default matplotlib backend.
# c.InteractiveShellApp.matplotlib = None
c.InteractiveShellApp.matplotlib = "inline"
ipython_config.pyを保存してJupyter NotebookをPyCharm4.5を実行すると%matplotlib inlineを実行しなくてもグラフ表示されました。

ただし最初のセルのコマンドをRunしたときはIPythonサーバの立ち上がるだけなので、またサーバが起動した後に最初のセルに戻ってRunしないとグラフ表示されません。

ということで上図で最初のセルがIn[1]ではなくIn[2]になっています。

PyCharm4.5でipynbファイルを開いたときに勝手に/usr/bin/python3.4 /usr/local/bin/ipython notebook --no-browser --ip 127.0.0.1 --port 8888 というコマンドを実行してくれればよいのですが、そういった設定は見つけられませんでした。

その他PyCham4.5のプロジェクトエクスプローラのコンテクストメニューのNewにipynbファイルがないことと、Jupyter Notebookの画面内でコンテクストメニューが使えないのが不満点です。

from pylab import * を使うのをやめる


Using IPython Notebook with PyCharm - PyCharm - Confluenceの例ので使われている「from pylab import *」の使用は使わないほうがよいそうです。

今から始めるPython その4 pylabネームスペースの解説: YATTSUKE BLOGとかPython モジュールの 「matplotlib」 と 「pylab」 との関係性 ~「pylab」って何だっけ? - Qiitaのコメントを読んで理由がよく理解できました。

pylabはMATLABと類似性のためにnumpyとmatplotlib.pyplotをワイルドカードでインポートしており名前空間の衝突が起こる可能性があるというのが、使わないほうがよい理由です。
import numpy as np
import matplotlib.pyplot as plt
今後はpylabに替わってこれらを使おうと思います。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 5, 10)
y = x ** 2
plt.figure()
plt.plot(x, y, 'r')
plt.xlabel('x')
plt.ylabel('y')
plt.title('title')
plt.show()
Using IPython Notebook with PyCharm - PyCharm - Confluenceの例はこのように書き換えられました。

IPython Notebookで数式をきれいに表示する方法--PyCharm4.5からは問題あり

[I 17:20:37.572 NotebookApp] Using MathJax from CDN: https://cdn.mathjax.org/mathjax/latest/MathJax.js 
IPython Notebookのログをみると最初にMathJaxをCDNによみにいっていることがわかります。

MathJaxはMathJax(1)ブログに数式をきれいに表示させる方法でこのブログにも導入している数式をきれいに表示するライブラリです。

デフォルトではLatex形式を$$で囲むと独立行、$で囲むとインライン表示になりました。

Using IPython Notebook with PyCharm - PyCharm - ConfluenceにIPython NotebookでMathJaxを使って数式を表示する方法が載っています。

MathJaxで表示させたいセルを選択してスタイルをCodeからMarkdownに変更します。

セルの左にあるIn[ ]の表示が消えます。
$$c = \sqrt{a^2 + b^2}$$
LaTeX形式で書いた数式を$$で囲んで入力しRunボタンをクリックします。

$$c = \sqrt{a^2 + b^2}$$
このように数式がきれいに表示されるはずです。

LaTex形式への変換はMathJax(2)数式をLaTeX形式に変換してくれるツールに載っているツールを使うと便利です。

ところが$$$\dfrac {3\pi } {2}+\dfrac {e^{ix}} {x^{2}+y}$$$は$$\dfrac {3\pi } {2}+\dfrac {e^{ix}} {x^{2}+y}$$としても以下のようになって正しく表示されませんでした。

\dfracが認識できないようです。

Martin's MathJax Guide - Fractions and related constructionsに載っている例も試してみましたが\dfracは認識できなくても\fracは認識できました。

ということで$$\frac {3\pi } {2}+\frac {e^{ix}} {x^{2}+y}$$は正しく表示できました。

PyCharm4.5からではなくブラウザからIPython Notebookを表示させると\dfracも正しく認識されたのでこれはPyCharm4.5の問題ですね。

IPython4への対応を機に改善されることを期待しましょう。

参考にしたサイト


Introduction to IPython configuration — IPython 3.2.0 documentation
IPython3.2の設定マニュアル。

python - Automatically run %matplotlib inline in iPython Notebook - Stack Overflow
%matplotlib inlineをいちいち実行しなくてよいオブション設定方法。

Plotting commands summary — Matplotlib 1.4.3 documentation
matplotlib.pyplotのコマンドリファレンス。

Index — NumPy v1.9 Manual
NumPyのコマンドリファレンス。

Using IPython Notebook with PyCharm - PyCharm - Confluence
IPython NotebookでMathJaxで数式をきれいに表示する方法。

Quickstart — IPython 3.2.0 documentation
MathJaxをローカルにインストールする方法が非推奨ですが載っています。

次の関連記事:linuxBean14.04(72)Anacondaで科学技術系Pythonパッケージを一括インストールする

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ