03 May 2017, 06:20

Jupyter Notebook で書いた ipynb を WordPress の記事にするには jupy2wp が便利

Jupyter Notebook で実行した結果や、matplotlib や seaborn で生成した図を、 そのまま WordPress に表示して、記事にしたいとする。

調べてみると、以下の やり方があるようだ。

  1. gist に アップロードして公開したものを WordPress に 埋め込む。
  2. Jupyter Notebook を html 形式で、ダウンロードする。
  3. .ipynb ファイルを nbconvert で html ファイルにして WordPress に入力する。
  4. jupy2wp を使う。

gist を埋め込む

Jupyter Notebook には、Gist-it という extentions がある。 extentions の有効方法については、以下の README を参照。

これを有効にすると、ツールバーに gist のマークが現れる。 ポチルだけで、gist に ipynb がアップロードされて、公開される。

注意点は、gist-it の設定画面から Github personal access token を入力することだ。 そうしないと、anonymous として gist が公開される。

しかし、この方法は自分は好まない。なぜなら、gist を WordPress に 埋め込んだとき、 コードの高さが固定されてスクロールバーが出てきてしまうからだ。この回避方法がわからなかった。 もし、この問題が回避できれば、gist はいいかもしれない。

どういう仕組みかわからないけれども、図表も表示される。

HTML 形式でダウンロードする

Jupyter Notebook の notebook を開いて、 File > Download as > HTML から html 形式でダウンロードする。

出来た html ファイルを WordPress のテキスト画面に貼り込む

この作戦も、自分は好まない。なぜなら、Jupyter Themes を使っているのだけれども、 Themes が反映された状態で HTML がダウンロードされるからだ。

黒背景を使っているので、真っ黒な画面になった、よくない。

nbconvert をつかう

以下のサイトで紹介されている方法。

1.Jupyter Notebook でコンテンツを作り、Save する 2.nbconvert で html ファイルに変換する

[sourcecode language=”sh” title=”” ]
$ jupyter nbconvert –to html –template basic 出来たファイル.ipynb
[/sourcecode]

3.出来た html ファイルを WordPress のテキスト画面に貼り込む 4.Wordpress の CSS ファイルに最後に示した CSS を追加する。

これはいいかもしれない。しかし、もっといい方法を見つけた。

jupy2wp を使う

jupy2wp というツールを使う。

インストール方法は README 参照。ちょっとコマンドオプションが長いけれども、以下のように使う。

[sourcecode language=”bash” title=”” ]
python -m jupy2wp.jupy2wp –xmlrpc-url http://futurismo.biz/xmlrpc.php –user username –password hogehoge –nb titanic-cnn.ipynb –title “Kaggle: Titanic 問題データ分析” –categories [Python, 統計] –tags keras
[/sourcecode]

こうすると、下書きの状態で、ipynb で表示されていた内容がそのまま記事として投稿される。

さらに、画像は、/upload フォルダ配下に自動でアップロードされて保存される。これはいい。

02 May 2017, 07:05

ダークな黒背景でクールにデータ解析!Jupyter Notebook Themes & Emacs KeyBinding

最近、Emacs よりも Jupyter Notebook の使用率が高いのだけれども(?!)、 今朝 twitter の タイムラインを眺めてたらこんなツイートが流れてきたので、飛びついた。

試してみたら、ものすごくクールだったので、スクショをとってみたのが以下。黒背景、メチャガチャクールだ。

Jupyter Themes

Jupyter Notebook を 黒背景にするには、Jupyter Themes という extentions を使う。

インストールは pip から。

pip install jupyterthemes

これで、jt コマンドが利用出来るようになる。

テーマは以下のテーマがある。私の大好きな monokai がある!!これは、うれしい! 他にも solarized の Light と Dark がある。

$ jt -l
Available Themes: 
   oceans16
   chesterish
   grade3
   solarizedl
   monokai
   onedork
   solarized-light

テーマの適用には、-t <theme> をつけて jt を呼ぶ。

jt -t monokai

フォルダはこんな感じ。

オプションに -N -T をつけると、ツールバーと ノート名を表示できる。

私の最終的な設定は、以下にした。 code のフォントは プログラミングに適していると言われている Ricty で有名な inconsolata。

jt -t monokai -f inconsolata -N -T 

追記

seaborn の縦軸横軸の表示が、背景が黒だとなにもみえなくなった。以下で解決。

custom_style = {'axes.labelcolor': 'white',
                'xtick.color': 'white',
                'ytick.color': 'white'}
sns.set_style("darkgrid", rc=custom_style)

Emacs KeyBindings

こうなったら、Emacs ライクに Jupyter Notebook をしようと思い、 Emacs ライクにキーバインディングをする方法も調べてみた。以下の extentions を入れる。

pip install jupyter-emacskeys

これで、コードを書くときに Emacs keyBindings が使える、と思ったがここで一つ問題が。 Ctrl + n は Emacs では 下に移動に割当たっているのだけれども、 ブラウザでは新しいウィンドウを開くに割り当てられているので、使えない。

これは、Ctrl + n で新しいウィンドウを開くのを無効にする firefox プラグイン、 “Menu Wizard”を入れることで解決できた。

このプラグイン、バグっているのか再起動すると、設定が消えるので、 ブラウザを立ち上げるたびに設定しないといけないのが難点。 Shift-Alt-M で設定画面が開くのでそこで設定する。

さよなら Emacs

これで Jupyter Notebook が markdown ではなく org-mode でかければ最強なのだけれどもそんなマイナーなニーズには対応していない。

とはいえ、データサイエンティストを目指すには Emacs とはおさらばだ!!