韜晦日記

韜晦日記

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

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

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

オンラインプロット

PlotlyではFreeアカウントを取得することでオンライン上で作成したグラフの編集、保存が可能になります。 オンラインプロットでは自分のアカウント上にグラフを保存するため、アカウント登録が必要です。
そしてグラフをプロットするにはAPIキーというのを取得する必要があります。非常に簡単に出来るので心配ありません。
Freeアカウントでは公開状態でグラフが保存されますが、年会費を支払うことでプライベート保存が可能になります。
詳細は次の料金プランについての説明を見てください。

APIキーの取得

オンライン上にプロットする為にはAPIキーを取得する必要があります。
APIキーはAPI Keyページから設定できるはずです。

f:id:tanisuke_str:20181110185434j:plain:w600
APIキーの表示画面
正しくリンクが飛ばない場合は、自分のアカウントからSettings > API Keysとクリックしてください。
初めてAPIを設定する方は API Keyの下にある部分のRegenerate Keyをクリックして保存します。
生成されたAPIキーは念のため人に見られない安全な場所に保存しておいてください。
一度登録してしまえばあとはあまり使うことはありません。

APIキーの登録

APIキーはPythonを使ってコマンドラインから設定できます。
あるいはAPIキー登録ようのpythonファイルを作成して実行してもいいかもしれません。

$ python
>>> import plotly
>>> plotly.tools.set_credentials_file(username='DemoAccount', api_key='lr1c37zw81')

usernameのDemoAccountapi_keyのlr1c37zw81を自分のものと置き換えます。 また、.credentialsファイルの設定からも行なえます。

  1. Finedrを開き > 移動 > フォルダへ移動(⬆︎⌘G)とメニューバーから選択。
  2. ~/.plotly/と入力
  3. .credentialsファイルを開き、usernameとapi_keyの部分に記入
  4. 保存して閉じる。

pythonAPIキーを登録した場合は、こちらのファイルが書き換えられているはずです。
APIキーに問題がありそうな場合はこちらのファイルを見直すか、新たにAPIキーを発行して登録し直すといいかもしれません。

オンラインプロットの公開範囲

プロットするデータが第三者などに閲覧されては困る場合、公開範囲に気を使わなければなりません。
Plotlyでは3つの公開範囲が用意されています。

種類 説明
Public 誰でもグラフを閲覧することが可能です。あなたのアカウントプロフィール上に、そして検索エンジンの結果にも表示されます。そしてPlotlyにログインすることなく閲覧が可能です。
Private あなただけがグラフを閲覧できます。この設定によってPlotlyのフィード上、あなたのアカウントプロフィール上、そして検索エンジンの検索結果に表示されなくなります。
このグラフを閲覧するにはあなたがPlotlyアカウントにログインする必要があります。また、他のPlotlyユーザーに対して個人的に公開も可能ですが、相手もログインする必要があります。
Secret 与えられたシークレットリンクを持つ人は誰でもグラフを見れます。WebページやIPython notebookに埋め込んだ場合も誰でも見ることができます。また閲覧にログインは不要です。しかしながらPrivateと同様に検索結果などには表示されません。

公開範囲を設定する場合はPython上で以下のように実行します。

import plotly
plotly.tools.set_config_file(world_readable=False, sharing='private')
#↓はデフォルトの設定
plotly.tools.set_config_file(world_readable=True, sharing='public')

また、公開範囲はプロット時に指定することもできます。
plot()のなかでsharing='private'と入力するだけです。

import plotly.plotly as py
import plotly.graph_objs as go

pass # プロットのための処理
# 系列データの設定
data = [trace0, trace1]

#グラフのプロット
# sharingで公開範囲の設定をする。
py.plot(data, filename = 'basic-line' \
  , auto_open=True, sharing='private')

オンラインプロットで描画

グラフのオンラインプロットにはplotly.plotlyの中のメソッドを用います。
公式ドキュメントではimport plotly.plotly as pyとして利用しています。
そしてオンラインプロットにはpy.plotpy.iplotの2つのメソッドが用意されています。
違いは以下のようになります。

  • py.plot : 任意のURLを返し、オプションで指定することでブラウザ上にグラフを表示します。
  • py.iplot : エディタ上に直接プロットすることができます。

どちらで実行してもPlotlyアカウント上に保存されます。

ということで、とりあえず考えなしに以下のコードを実行して見てください。

import plotly.plotly as py
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, 9]
)
data = [trace0, trace1]

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

自分のアカウントが開き、以下のようなグラフが表示されるかと思います。

因みに、py.plotメソッドではプロット時の設定をオプションで与えることができます。
上ではfilenameで保存するファイル名、auto_openでグラフの表示・非表示の設定を行なっています。
auto_openではTrueの時は自動的にブラウザを起動しグラフを表示しますが、Falseだとグラフを保存したURLを返してくれます。

,またAPIキーの設定などが済んでいないとエラーが生じるので注意してください。 エラーは以下のような内容で出るかと思います。

#APIキーが指定されていない時
Make sure that you're logged in as ユーザー名.
Need help? Please try searching Plotly's <a href='http://stackoverflow.com/questions/tagged/plotly'>Stack Over
flow channel</a>.

#APIキーとユーザー名が指定されていない時
Aw, snap! We didn't get a username with your request.
Don't have an account? https://plot.ly/api_signup
Questions? accounts@plot.ly

といった感じ今回は簡単な使い方説明に留めておきました。
Plotlyではかなり凝ったレイアウトにすることができるのでそちらも紹介していきます。
レイアウトの参考にはデモ記事を参照してください。
tanisukestr.hatenablog.com