Plotlyはとても便利だが,Seaborncolor_paletteのように柔軟に色指定ができない.そこで,Plotlyのcolor引数として使用可能なRGB値を,Seabornのcolor_paletteから取得するラッパー関数を作成した.

Plotly

Plotlyはインタラクティブで美麗なグラフ描画に強みを持つライブラリ.PythonR,あるいはJavaScriptから呼び出して使える.私はJupyter Notebook上で作図したグラフをグリグリ動かしてドヤることが多いので,この記事ではPythonからの利用を前提とする1

pipでインストールする場合はpip install plotlyCondaでインストールする場合はconda install -c plotly plotly

Seaborn

Seabornは,matplotlibをベースとしたグラフ描画ライブラリ.color_palette(palette, n_colors)で,特定のpaletten_colors個の色リストを直感的に取得できる.Plotlyでこれを使いたい.

seaborn

pipでインストールする場合はpip install seabornCondaでインストールする場合はconda install -c anaconda seaborn

Plotlyにおける色指定

Plotlyでは,非常に色指定をし辛い23colorlover - GitHubを使ってカラーパレット的なものを使うチュートリアルが公開されているが,パレットの種類が少ないし,interpで任意のスケールに拡張したときにムラが出たり,エラーがでたりする場合がある.あるいは,markercolorscaleでパレットを指定するチュートリアルも公開されているが,colorでサンプルごとにスケール値を指定する必要があり,凡例ごとに色を塗り分けるときなど,直感的なコーディングがしづらそう.

input output

そこで,Seabornライクに色を指定するための関数を作成した.

作成した関数

関数の内部でsns.color_paletteを呼び出し,RGB値を取得している.ただし,Plotly用のフォーマットrgb({}, {}, {})に変換している.

実験

こちらのJupyter notebookで実験してみた.15パターンの凡例を折れ線グラフで表示する.

ライブラリのインポート

データセット生成

15種類のランダムな100点からなるサンプルを作成する.

Plotlyで素直にプロット

11種類以上の判例になると,色が衝突しているのがわかる.

PlotlyでSeabornライクにプロット

まずはhlsでプロットしてみる.

次はviridisでプロットしてみる.

最後にinfernoでプロットしてみる.

jet以外のMatplotlibのColormapを利用できる.

感想

これで,単なる折れ線グラフでもドヤれる.

  1. RやJavaScriptから使ったことがない. 

  2. 単純に私のPlotly力が足りないという説もある.「こうすればできるよ」的なTipsがあれば是非ご教授ください. 

  3. 公式チュートリアルで,カラーコードを直接指定しているのを見てドン引きした人も多いはず.