韜晦日記

韜晦日記

Rietveldよりもプログラミングメインになりつつある

Rietveld解析初心者による備忘録とつぶやき

Plotlyをオフラインで使う方法 | Plotly徹底解説

ここではオフラインで描画する方法について説明します。
オフラインモードでは以下の2つのやり方でグラフを描画できます。

  • ファイルを実行し、ブラウザ上に表示
  • エディタであるAtomやjupyterの画面上に表示

またオフラインでプロットする場合、Plotlyのアカウント取得やAPIキーの設定はする必要はありません。
しかし、のちにオンライン上でグラブ編集したり保存するためにはアカウントが必要になるので登録(無料)することをお勧めします。

ではやって行きます。

普通にプロットする

オフラインで描画するために以下の2つをインポートします。

# import plotly.plotly as py <- オンライン用
import plotly.offline as offline # <- オフライン用
import plotly.graph_objs as go

プロットする場合は

offline.plot(data, filename = 'basic-line', auto_open=True)

となります。以下のプログラムをコピペして実行してみてください。

# 以下の2つをインポート
import plotly.offline as offline
import plotly.graph_objs as go

trace0 = go.Scatter(
x=[1, 2, 3, 4],
y=[10, 15, 13, 17]
)
trace1 = go.Scatter(
x=[1, 2, 3, 4],
y=[16, 5, 11, 10]
)
data = [trace0, trace1]

# オフラインでプロット
offline.plot(data, filename = 'basic-line', auto_open=True)

ここで、offline.plotの引数にあるauto_openTrueとすると、作成したグラフを自動的にブラウザで表示してくれます。
auto_open=Falseとするとグラフは表示されず生成したファイルのパスを返します。
何れにしてもHTMLファイルが生成され、再度表示することが可能になります。
デフォルトの設定はTrueとなっています。

Atom, jupyter notebookで描画する

基本的には前節で説明したやり方と変わりありませんが、4点ほど違いがあります。

  • import文の後ろにoffline.init_notebook_mode()を追加
  • offline.plot()ではなくoffline.iplot()を使う
  • HTMLファイルは出力されない。
  • auto_openは使えない。(エディタ上で直接見るので当然ですね。)

その他は基本的に同じはずです。

offline.init_notebook_mode()について*1

これはデフォルトでoffline.init_notebook_mode(connected=False)となり、ブラウザに必要なライブラリ(plotly.js)を読み込みます。
常にオフラインで実行する場合はoffline.init_notebook_mode()とします。
しかし、この方法だとファイルにplotly.jsを直接読み込むことになるのでファイルサイズが数メガバイト増加します。

試しに以下のコードを使ってjupyter notebookのファイルサイズの変化をみてみます。

# 以下の2つをインポート
import plotly.offline as offline
import plotly.graph_objs as go

offline.init_notebook_mode(connected=False)

trace0 = go.Scatter(
x=[1, 2, 3, 4],
y=[10, 15, 13, 17]
)
trace1 = go.Scatter(
x=[1, 2, 3, 4],
y=[16, 5, 11, 10]
)
data = [trace0, trace1]

# オフラインでプロット
offline.iplot(data, filename = 'basic-line')

このコードでconnected=Falseconnected=Trueを切り替えると

  • Trueの時  : 5 KB
  • Falseの時 : 5.9 MB

と、ファイルサイズが増加することがわかります。 一時的にでもインターネットに接続できる場合や、ファイルサイズを小さくしたい場合にはTrueを選べば良いと思います。