学習する天然ニューラルネット

主に機械学習に関する覚書や情報の整理

Jupyter notebookでPlotlyを使うときに一設定必要だった話

はじめに

可視化が大事なのは言わずもがな。調べていた所Plotlyというものに出会いました。ただ、早速使おうとしたらJupyter notebookにグラフが表示されなかったりエラーがでたりしました。エラーで検索したところ、日本語の記事がヒットしなかったので、ここに記録を残しておきます。

エラーを解決する

どんなエラー表示が出たか

IOPub data rate exceeded.
The notebook server will temporarily stop sending output

実行しようとすると、上述の文からはじまるエラーが表示されていつまで経っても図が表示されませんでした。(データ点の個数にもよるのかな?検証してません)

どうしたら良いか

stack overflowを漁ってたら書いてありました。

  1. まず、jupyterを一回閉じてください(ローカルホストごと落としてください)

  2. ターミナルで以下のコマンドを打ち込みます

    jupyter notebook --generate-config
    
  3. すると~/.jupyter/jupyter_notebook_config.pyが作られると思います。これをテキストエディタで開いてください。

  4. jupyter_notebook_config.pyを編集します。"c.NotebookApp.iopub_data_rate_limit"という文字列を検索するとすばやく見つけることができます。それを以下のように編集します。

    #c.NotebookApp.iopub_data_rate_limit = 1000000
    

    c.NotebookApp.iopub_data_rate_limit = 100000000
    

    コメントアウトを外し0を増やしただけ。

  5. 保存して閉じてください。jupyter notebookを再度開けば 無事plotlyが使えるようになると思います。

本当にこれでいいのかはわかりませんがとりあえず動けばいいのです。

Plotlyをオフラインで使う

以下の記事がシンプルにまとめてあると思います。アカウント登録などの手続きもいらず、具体例も多いです。

matplotlib使いづらくない?plotlyで可視化しようよ - MATHGRAM www.mathgram.xyz

あと公式もわかりやすいです。ただoffline用に書き換えないとPlotly側のサーバーにデータが送信されます。気をつけてください。追記: saveボタンを押したり、exportボタンを押さければ大丈夫なようです勘違いしてました。 plot.ly

さいごに注意

PlotlyをOfflineで使う場合、プログラム上で図が保存できません。表示した図の"保存ボタン"を押せば、図は保存できます。しかし、一度に1000枚の図を描いて自動で保存みたいなことができないということです。これはトラップでした。(一応できます。celeniumを使って無理やりプログラミング的に保存するコードは頑張ってググれば出てきます。)

Plotlyに似たものでBokehというものがあり、最近はそっちを使ってます。Plotlyよりも軽量でいい感じです。ドロップダウンメニューやスライダーで図を動的に動かせる機能もplotlyよりも簡単に書ける印象です。