蟹者

Python系技術メモ+20代土木技術者焦燥日記

plotlyかなー、やっぱw オンラインでインタラクティブなグラフを公開したいって、よく言われる()

色々webを見ていたら、タイトル通りの機能が簡単に使えるplotlyという神ライブラリを見つけたので、使ってみました。

一昔前、pythonでグラフ図示ならmatplotlibという風潮がありましたが、塗り替えられつつあるかと思います(知らんけど)。

オフライン使用でも、手元でグリグリできて、マウスオーバーで値を表示できたりといった機能は、解析の場面でもふっつーに便利だと思います。

そういえば、matplotlib1000本ノックをすると言ったな、アレは嘘だ。


引用:
matplotlib使いづらくない?plotlyで可視化しようよ - MATHGRAM
[Python] Plotly 入門 - ゾンビでもわかるPythonプログラミング

必要な情報は、基本的にすべてこのリンクに書いてあります。




オフラインで使用する

・インストールは、まあ普通にpipでいけました。

上記引用からコードをパクってやってみます。

 ・trace : データや作図情報(データ点そのものの色や大きさ)を定義

 ・layout:グラフのタイトルや色などを指定

 ・dataとlayput を辞書型でくくって、plot または iplotに渡して作図します。

# coding:utf-8
#import plotly.plotly as py
import plotly.offline as offline
import plotly.graph_objs as go
#offline.init_notebook_mode()

# Create random data with numpy
import numpy as np

N = 100
random_x = np.linspace(0, 1, N)
random_y0 = np.random.randn(N)+5
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N)-5

# Create traces
trace0 = go.Scatter(
    x = random_x,
    y = random_y0,
    mode = 'markers',
    name = 'markers'
)
trace1 = go.Scatter(
    x = random_x,
    y = random_y1,
    mode = 'lines+markers',
    name = 'lines+markers'
)
trace2 = go.Scatter(
    x = random_x,
    y = random_y2,
    mode = 'lines',
    name = 'lines'
)

layout = go.Layout(
    title='たいとる',
    xaxis=dict(title='えっくすじく'),
    yaxis=dict(title='わいじく'),
    showlegend=True)

data = [trace0, trace1, trace2]
fig = dict(data=data, layout=layout)
offline.plot(fig, filename='scatter-mode.html', image="png")


実行すると、htmlファイルができて、pngファイルも生成されます。

f:id:russENG:20180319130523p:plain

そしてhtmlファイルをブラウザで開くと*1、グリグリできるーーー。そして簡単ーーーーー。

どうやらSVG形式でも保存できるようです(未確認)。



オンラインで使用する(グラフを公開する)

アカウント登録

・まず、Plotly | Make charts and dashboards onlineでアカウントを作成します。

・UsernameとAPI Keyを取得します。


APIの設定


・設定ファイルを編集

>>> import plotly
>>> plotly.tools.set_credentials_file(username='ゆーざーねーむ', api_key='えーぴーあいきー')


・設定ファイルの確認

$ cat ~/.plotly/.credentials

{
    "username": "ゆーざーねーむ",
    "api_key": "えーぴーあいきー",
    "proxy_username": "",
    "proxy_password": "",
    "stream_ids": []
公開用グラフの作成
>>> import plotly.plotly as py
>>> py.plot(fig, filename='test')

実行すると、以下のようなメッセージが出てきて、公開用のURLが得られます。

High five! You successfully sent some data to your account on plotly. View your plot in your browser at https://plot.ly/UserName/0 or inside your plot.ly account where it is named 'test'
'https://plot.ly/~UserName/0'

公開リンクには、左下にシェアボタンがあり(現時点)、「Embed Code」ボタンを押すと、こういうとこに貼り付ける用のHTMLタグ文を得られます。



https://plot.ly/~crubclub007/0/



よかったですね。

あと、オフラインのHTMLを開いて、色々いじって言っても公開用グラフに変更できたりできるっぽいです(おそらく)。

*1:このコードだと勝手に開く。多分plotの引数で設定?