227
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Pythonの可視化パッケージの使い分け

Pythonで可視化といえばMatplotlibだけど、APIがごちゃちゃしていて覚えにくいのが難点かな。BokehがAPIもうまく整理されていて一番使い勝手がいい気がするけど、まだまだ日本語の情報が少ないのが惜しいところ。
これからはWebにも対応できるBokehが伸びてくるんじゃないかと勝手に期待している。

おすすめの使い分け方

  • 簡単なデータを手早くプロットするなら
    • Matplotlib
  • MATLABからPythonに乗り換えたなら
    • Matplotlib
  • かっこよく人に見せたいなら
    • Bokeh
  • 対話操作を入れたいなら
    • Bokeh
  • グラフ上のデータ点の数値を確認したいなら
    • Bokeh
    • Plotly
  • 3D形状をプロットするなら
    • Plotly
    • Mayavi
  • 統計分析するなら
    • seaborn

Matplotlib

良い点

  • 簡単なデータをプロットするのは楽。
  • プロットの機能が充実している(気がする)。
  • 日本語の情報が他と比べると多い。
  • pandasのDataFrame.plotメソッドなどから直接プロットできる。
  • APIがMATLABに似ているので、MATLABから乗り換えるのは楽。
  • 3Dプロットのスケールが軸ごとに自動設定される。

悪い点

  • デフォルトでは日本語が表示できない。
  • Notebook上では対話的にグラフを動かせない。(%matplotlib inlineの代わりに%matplotlib notebookとしておけば動かせるけど、Notebookを閉じてもう一度開くと動かせなくなっている。)
  • 命令型のAPIとオブジェクト指向のAPIが混在していて、混乱することがある。
  • 対話操作のレスポンスは良くない。
  • 3Dプロットの手順は面倒で覚えにくい。
  • 3Dプロットで3軸のスケールを揃えるのはかなり面倒なので3D形状を表示するのには適していない。

プロットのサンプル

output_1_1.png

Bokeh

良い点

悪い点

  • 3Dプロットができない。
  • 基本となるplottingモジュールのAPIは色分けを自分でやらないといけない。
  • chartsモジュールのAPIは簡単なデータをプロットするにはまわりくどい。

プロットのサンプル

スクリーンショット 2017-01-28 17.55.39.png
動かせるサンプルはここ Gallery — Bokeh 0.12.4 documentation

Plotly

良い点

  • Notebook上でもプロット後に対話的にグラフを動かせる。
  • 対話的に動かせるグラフをHTML化して人に渡せる。
  • データ点の数値を表示する機能がデフォルトで有効になっている。
  • 3Dプロットが2Dプロットと同じ手順でできる。
  • 3Dプロットのレスポンスがいい。
  • 3Dプロットのスケールが3軸とも同じなので3D形状を表示するのに適している。

他の機能もだいたいBokehに近い感じだけど、詳しく調べていない。

悪い点

  • グラフのサイズを指定するのが面倒。
  • 3Dプロットを軸ごとに違うスケールで表示する方法がわからない。
  • 情報がかなり少ない。
  • 一部の機能は有料(Streamingは有料らしい)
  • ドキュメントが参照しづらい。
    • docstringの説明が短い。
    • サンプルコードのほとんどが有料版のAPIを使っている。
    • 公式ドキュメントで検索ができない。

プロットのサンプル

スクリーンショット 2017-02-02 23.44.25.png
動かせるサンプルはここ Python Graphing Library, Plotly

補足: サンプルコードを無償版で動かすには

import plotly.plotly as pyimport plotly.offline as py に置き換えれば、だいたいは動くはず。

Mayavi

良い点

悪い点

  • PyQt5に対応していないのでインストールが面倒
    • Anaconda 4.3.0のroot環境ではデフォルトでは動かない。
    • バージョンを指定してPyQt4をインストールする必要がある。
    • conda update --allはNG(PyQt5にアップデートされる)
  • デフォルトでは軸が表示されない。
  • Notebook上での表示は一応できるが、かなり機能が限られている。

seaborn

良い点

  • 統計分析に特化した超高水準のAPIがたくさんある
  • jitterが便利(重複して見えにくい点を少しずらしてプロットする機能)

悪い点

  • インポートするだけで勝手にMatplotlibのスタイルを変更してしまう。

参考リンク

Jupyter-notebook の作図ライブラリ比較 - Qiita
なんでもかんでもJupyter Notebookに表示するためのチートシート - Qiita

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
227
Help us understand the problem. What are the problem?