The jonki

呼ばれて飛び出てじょじょじょじょーんき

ヘッドレス環境でもplotlyでpng書き出ししたい

Pythonでグラフを書くとき,Plotlyを私はよく使います.別にmatplotでもいいんですが,scatterの図でWebブラウザ上で,インタラクティブに各ポイントにラベルを確かめられる機能が気に入ってます. plot.ly

ただし私の揮発環境はGUIを入れないヘッドレスな環境なので,グラフのHTML書き出しは出来たんですが,png書き出しができませんでした.そこで見つけたのがorcaというElectronのアプリで,これを経由するとうまくいきそうでした.インストール方法はconda, npm, Docker, スタンドアロンバイナリと色々あるのですが,結論から言うとDocker以外,ヘッドレス環境のためかうまくいきませんでした.ヘッドレス環境では,xvfbなどの仮想ディスプレイを使う必要があるのですが,この辺うまくインストールできませんでした.

結果として,うまくいったのがDockerでplotly-orcaのサービスを起動しておき,URL request経由で画像生成のAPIを呼ぶスタイルです.仮想ディスプレイ周りなど沼だと思うので,コンテナで切り離した環境を使うこのスタイルが何だかんだでスッキリします.

使うためには,予めDockerでplotly-orcaのサービスを起動します.

docker run -dp 9091:9091 quay.io/plotly/orca

あとは,下記のような形でpostする形でうまくいきました.これでhtmlとpngの両方がサーバーのような環境でも出力できるようになったはずです. gist.github.com