matplotlibで論文用の図を作成

タイトルの通りの目的のためにmatplotlibの勉強をしたのでメモを残しておく。

次のnotebookのように図ごとに明示的にmatplotlibのrcを指定してプロット用の関数を作るのにとりあえず落ち着いている。

gist.github.com

rc

plt.rcParamsを直接いじるのは好きでないので1plt.rc_contextで設定を分離する。

rcparamsの設定はseabornのpaperスタイル が好きなのでこれをベースにする。

デフォルトのseaborn-paperスタイルからの変更は以下の通り2

  • グリッド線を細くする
  • フォントをTimes New Romanに設定
  • 上と右のspineを消す
  • グリッド線をオブジェクトより後ろに置く
  • tickを内側に向ける

図の大きさ

幅は1カラム分なら3.375インチ、2カラム分なら6.75インチ。 (高さは黄金比になるように選ぶといいらしい。)

保存時のdpiは300くらいにする。jupyter notebookを使っている場合、デフォルトのdpiは75とかなり小さいので注意。

plotter

FigureとAxesを引数に取りプロットする関数をつくると後から変更が加えやすい。

図の保存

余計な余白が入らないようにする:

fig.savefig(fname, bbox_inches="tight", pad_inches=0.0)   

保存形式は後から編集できるpdfかepsが無難。

参照リンク

Times New Roman が使えない場合 qiita.com

結局公式ドキュメントが一番わかりやすい matplotlib.org

matplotlibのバージョンが古いが面白い github.com


  1. JupyterLabやJupyter Notebookでプロットを作っているとグローバル変数が訳わからなくなりがちなのでplt.rcParamsはできるだけいじりたくない

  2. プロットの見た目をよくするとは何を最適化することなのか未だにわからない。