Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【matplotlib, subplots】1つの画像に複数枚のプロットを載せたい

subplotとsubplotsを使った方法がある

それぞれの使い方は

matplotlibの描画の基本 - figやらaxesやらがよくわからなくなった人向け #Python - Qiita

を参照にすると良い

 

自分はよくsubplotsの方を使っている

どっちを使うかは好みだと思う

 

subplotsでは初めに分割数を選ぶ

その後各タイルにプロットを描画していく

 

fig, axes= plt.subplots(2,2)   # axesはAxesオブジェクトの2x2の配列
axes[0, 0].plot([1,2,3])
axes[1, 0].plot([4,5,4,5])

みたいな感じ

 

このときaxes []の中身の順番を毎回忘れるのでメモしておく

[x, y]ではなくて[y, x]

xとyはそれぞれx方向に何番目か、y方向に何番目かを表すindexと思えばいい、1ではなくて0から始まる

 

公式ドキュメントは以下

matplotlib.pyplot.subplots — Matplotlib 3.9.2 documentation

 

-------

 

最初にsubplots(2, 2)と指定するときにsharedxとかsharedyというオプションを指定することも可能

これで、一部だけ軸の数字が表示される

 

tight_layout = Trueとすると、レイアウトの自動調整が行われるらしい

何がどうかわるかは不明・・・ 嬉しい調整なら、デフォルトでTrueにしといてくれたらいいのに

 

また何かわかったら加筆修正します