韜晦日記

韜晦日記

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

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

描画ライブラリPlotlyの使い方を徹底解説 | Python

Pythonでもっとぐりぐりグラフを弄ってみたり描画しながら編集したいとは思いませんか?
今回はそんな方にオススメのグラフ描画ライブラリのPlotlyについてできる限り詳細に解説したいと思います。

Plotlyとは

PlotlyはPython, R, JavaScript, MATLABに提供されているオープンソースのグラフ作成ライブラリです。インタラクティブなグラフを簡単に作ることができ、グラフをグリグリ動かして見たい時には非常に便利なライブラリです。

Plotlyはインタラクティブな操作が可能な上に3Dプロットを含む30種類以上のグラフスタイルに対応しています。
では、インタラクティブな操作って何よ?と思う方向けにデモとグラフの操作方法についての説明をいくつか用意しました。

またPythonでグラフを一度生成すれば、オンライン上で直接レイアウトを編集できるようになります。
そのほかにもPlotlyで作成したグラフを使ってプレゼンテーションを作成するためのソフトや、Powerpointへの埋め込みを行う為のプラグインも提供されています。
Powerpointでグラフがグリグリ動かして見ることができるのは画期的ですよね。

以下にPlotlyの特徴として良い点とあまり良くない点を纏めておきます。

  • Plotlyの良い点

    • グラフの軸移動や拡大縮小、系列の表示・非表示が自由自在
    • 作成したグラフをWeb上に保存できる。
    • Web上にグラフが保存されているので、ブログなどへの埋め込みも非常にシンプル。(埋め込み用の短いURLが生成される。)
    • インタラクティブに動かせるグラフをそのままHTML化して人に渡すことができる。
    • 作成したグラフはPowerpointにも埋め込める ←これマジですごい。
    • Excel上でもExcelのグラフの代わりにPlotlyのグラフを使える。 ←これも凄い
    • Plotly専用のパワポ的ツールがある。 ← まだ最低限の機能しかなく発展途上感がある。
      Githubの更新は2年前のver0.1.4で止まっているので今後どうなるかはわからない。
    • タイトルやキャプションがLatexで記述できる。(Matplotlibでもできるけど)
    • とにかく綺麗にプロットできる。
    • 軸ラベルやタイトルもその場で変更可能 (https://plot.ly/python/configuration-options/#)
  • あまり良くない点

    • 一部の機能が有料。そしてそれが高い。
    • オンライン版の表示が少し重い。オフライン版はかなり軽量。 ←複雑で無ければ気になりません。
    • ドキュメントの説明が不十分という噂をちらほら聞く。

正直他のライブラリを多用しないので悪い点があまり思いつきません。。。
でも確かに、たまにドキュメントを参照しても書いておらず、Plotlyのライブラリを読み込んでhelp( )コマンドで参照しないと解決しないなんてこともあります。
そこで今回自分自身がPlotlyを使う中で知ったことを改めてし整理したいと思います。
と言っても、当然ですが、Plotlyの公式ドキュメントに書いてあることがほとんどです。
手っ取り早くみたい方はそちらで十分かも知れません。英語ですが難しくはありません。

あと、私の実行環境は以下の通りです。  

  • Python 3.7.0  
  • Plotly 3.4.0

インストール・各種環境の準備

インストール

インストールはpipを使って通常通り行います。
大抵の場合、Pythonをインストールした時点でpipが入っているはずなのでpipの説明は割愛します。

$ pip install plotly
# あるいは
$ sudo pip install plotly
#condaを使う場合は
$ conda install -c plotly
# PlotlyのGithubではバージョンを明示的に指定してインストールしています。
$ pip install plotly==3.4.0

アップデート

アップデートは以下のコマンドで実行します。pipの基本的な操作と変わりありません。

$ pip install plotly --upgrade

Jupyter notebookを使ってグラフを描く準備

Jupyter notebook上でもPlotlyを使ってインタラクティブなグラフを描画することができます。
ということでまずJupyterのインストール。
正直な話、自分がどうやってJupyterの環境を構築したのか忘れましたので各自調べてください。
公式のインストール方法では以下のように指定されています。 またGoogle ChromeやFierFoxを既定のブラウザに指定し、IEの仕様は避けた方が良いそうです。

$ pip install --upgrade pip
$ pip install jupyter

# 起動する場合は
$ jupyter notebook

hydrogenを使ってAtom上でグラフを描く準備

Atomというエディタがありますが、hydrogenというパッケージを導入することでAtomの画面上でコードの実行とグラフを描画が可能になります。 特にステップインでコードの実行ができるのは便利です。
Atomでhydrogenを使用するためにはjupyter notebookがインストールされている必要があります。
jupyter notebookをインストールして動作することを確認したらAtomを開きます。
Atom設定 > インストール > hydrogenで検索 > 出てきたパッケージをインストール
これで終わりです。

オンラインでプロットする方法

オフラインでプロットする方法

掲載 詳細な図などを入れた解説はまた後ほど

無料アカウントの制限と有料アカウントの料金について

後日掲載

各種メソッドの説明

後日掲載

レイアウトの指定

後日掲載

go.Scatterの設定

後日掲載

Configの設定

後日掲載

画像を出力

後日掲載

スライド作成 (プレゼンテーション作成)

Powerpointへの埋め込み

後日掲載

Plotly専用ソフト【Spectacle Editor】

後日掲載

Web・ブログへの貼り付け

後日掲載

困ったときは

後日掲載

グラフの画像やPDFが出力できない。

Chart Studioで画像を出力する際に大量のデータ点を扱っている場合、以下のようなエラーが吐かれて出力できません。
opps there was an error exporting your plot.
他の方法で画像を出力させるとエラーは吐かれずいダウンロードエラーが生じます。
この問題はGoogleの画像出力システムが50,000点以上の出力をサポートしていないためだと説明されています。

Unable to export - Chart Studio - Plotly Forum

質問者さんめっちゃ怒っているように見えますね 笑
コミュニティ上でも明確な解決法が提案されておらず、これは最早あきらめるしかなさそうです。
解決法としてはAPIで直接画像を出力させる方法が考えられますが、私自身未確認ですので実際に試した方がいれば教えてください。
私はめんどくさいのでスクショで済ませました。