My Memo

私のメモ

Plotlyで簡単なグラフを描いてみる(Python)

Plotlyとは?

Pythonのグラフ描画ライブラリーで描画したグラフの拡大縮小,軸のスケールの変更などなどができる.
Plotlyのグラフ描画モジュールにはexpressとgraph_objectsがあるらしいが,基本はgraph_objectsでexpressモジュールはサクッとグラフを書くためのモジュールで内部ではgraph_objectsの関数を呼んでいるらしい.(公式ドキュメントPlotly Expressの雑和訳)

f:id:Ibetoge:20210427124756g:plain
Plotlyの動くグラフ

今回はexpressでサインカーブを書いてみる.
graph_objectsでの描写はこちら→
ibetoge.hatenablog.com

plotly.expressでとりあえず描く

環境 macOSpython 3.7.6,Plotly 4.14.3
Plotlyがない人はターミナルで下のコマンドを叩いてインストール.

$ pip install plotly

モジュールをインポートする.

import numpy as np
import plotly.express as px

まずはデータを用意する.今回は横軸 tの範囲を0\le t\le 4\piとしてサインカーブf(t)=\sin tを書くのでそれを用意する.

t = np.linspace(0, 4*np.pi, 100)
sint = np.sin(t)

次にplotly.expressモジュールで描画する.

#グラフのインスタンスを作成
fig = px.line(x=t, y=sint)
#グラフをブラウザーで表示
fig.show()

これで動かせるグラフが描画できる.
グラフの軸に名前を設定するには,インスタンス作成時に

fig = px.line(x=t, y=sint, labels={'x': r"$t$", 'y': r"$\sin t$"})

とすればOK.ここでr"$\sin t$"とかのr"$$"の部分ですが,Plotlyで文字列にLatex数式を使うときはr"$$"を使用します.
もっとしっかり目盛りなども設定したい人向け→

f:id:Ibetoge:20210427144425p:plain
Expressで書いたサインカーブ(これはPNGなので動きません)

Plotlyのグラフをファイルに保存する

fig.show()

を用いると,実行した際に動かせるグラフがブラウザーに表示されるが,グラフをhtmlファイルとして保存したい場合は,

#htmlで保存
fig.write_html("figure.html")

でOK.画像ファイルとして保存するには,kaleidoパッケージが必要なので,次のどちらかのコマンドを叩いてkaleidoをインストールする.(kaleidoの代わりにorcaパッケージでも良いらしいが非推奨)
pipの場合

 $ pip install -U kaleido

anacondaの場合

 $ conda install -c conda-forge python-kaleido

kaleidoをインストールしたら,

#pngで保存
fig.write_image("figure.png")
#jpegで保存
fig.write_image("figure.jpeg")

と書けばすれば良し.こうすれば保存したhtmlファイルをブラウザで開けばいつでも動かせるグラフが見られる.もちろん画像ファイルとして保存した場合は動かせない.

最後にソースコード

import plotly.express as px
import numpy as np

# 横軸は0<t<4pi,グラフはsin(t)
t = np.linspace(0, 4*np.pi, 100)
sint = np.sin(t)

# グラフのインスタンス作成(軸ラベル付き)
fig = px.line(x=t, y=sint, labels={'x': r"$t$", 'y': r"$\sin t$"})
fig.update_xaxes(title="t")
fig.update_yaxes(title=r"$\sin t$")

# グラフをブラウザーに表示
fig.show()
# htmlで保存
fig.write_html("figure.html")