matplotlibで複数のグラフを作ったが、上司に報告するときExcelに貼り付けるってどうよ

患者統計(医事統計)の数字がおかしいので調べてくれ

という上司の命令に従い、渋々これまでの月別帳票(月別に別個のフォルダに格納されている)をPython標準ライブラリのglobとosを使って爆速で一括取得し、openpyxl で特定のセルだけ横串にしてmatplotlibで数値の月別変遷を見える化、したものの、

出来上がった複数のpngファイルをExcelに貼り付けて報告

という最後の落ちで笑えない状態になりました。せっかくjupyter notebookで作業してるんだから最後までスマートに行きたいものです。Excelpngファイルを貼り付けって、結局手作業で画像の位置が微妙にずれたりして見た目にも美しくありません。

jupyter notebookからグラフを貼り付けたHTMLファイルを生成し、それで報告する

ここに同じような発想をしている人がいました。

qiita.com

スタンドアローンのHTMLファイルのソースコードを開いて、markdownで必要なテキストやデータテーブルを記載するというものです。これは素晴らしい! このスタンドアローンHTMLファイルをテンプレートにしてjupyter notebookからmatplotlibで生成したグラフをbase64形式にして貼り付ければ

Excel方眼紙を完全に駆逐

できます。pngファイルの残骸も発生することがありません。

ということでjupyter notebookに実装しました。

gistc542f40ad8221297a5c2436dbcceb410

matplotlibのグラフを任意の数だけを貼り付けたHTMLファイルがカレントディレクトリに生成されます。

f:id:HealthcareIT_interpreter:20170723171351p:plain

このファイルをエディタで開いてmarkdown記載領域に必要な説明文を追加すれば以下のようになります。う、美しい!

f:id:HealthcareIT_interpreter:20170723171358p:plain

はいサイナラExcel