描画設定とデータが入ったJSONをぶっ込むと一意にプロットされるmatplotlibが欲しい
— 塩こんぶ (@mojaie) 2016年10月23日
あった https://t.co/YoUCTeWzl5 https://t.co/n19jmsIywA
— 塩こんぶ (@mojaie) 2017年1月22日
プロットのデータ自体はJSONなのでオフラインWebアプリとJupyter notebookでいろいろアレできそう https://t.co/cnyorF2TDA https://t.co/6rQsW4fqck
— 塩こんぶ (@mojaie) 2017年1月22日
仕事で実験装置が吐く大量のデータから大量の棒グラフや折れ線グラフを書いてレポーティングするルーチンがよく発生するので、プロットを自動化する必要があった。あとJupyter notebookでグラフを作成したい。ついでにD3で作っている可視化Webアプリケーションでもグラフを表示したい、ということでJSONで記述されたデータ可視化言語のようなものがあったらいいなあと思っていた。
Vega
JSON形式でデータプロットの設定やデータを記述すると、CanvasやSVGでデータプロットが表示される。今後各言語に対応したVegaパーサの開発が進めば、D3やmatplotlibなど各プログラミング言語の可視化ライブラリに特有の文法や細かい表示の違いに悩まされること無く、共通フォーマットで可視化されたデータを共有することが可能になるだろう。
Vega Editorというウェブアプリケーションを使って動作を確認することも可能。上部のプルダウンメニューから様々な使用例を見ることができる。
下記はアメリカの空港の分布、マウスオンで路線が表示される。
http://vega.github.io/vega-editor/?mode=vega&spec=airports
Vega-lite
Vegaの軽量版。棒グラフ、折れ線グラフ、散布図などを作成するにはこれで十分。Vegaと同様に、Vega Editorでフォーマットと使用例が確認できる。
Altair
https://altair-viz.github.io/index.html
Vega-liteパーサのPythonバインディング。
Pandasで処理したデータをAltairで可視化という感じになる。Jupyter notebookでの使用例も豊富にあるので、説明するよりは例を見てもらったほうが早そう。
https://altair-viz.github.io/gallery/index.html
(2017.2.10 追記)
Jupyter notebookで使うだけならAltairは必要なさそう。
IPython VegaというnotebookのextensionをインストールしてVegaかVega-liteのJSONを読み込めばより簡単にグラフをnotebook上に表示できる。
IPython Vega
https://github.com/vega/ipyvega