matplotlibで複数列のプロットをいい感じに

A8バナー広告

こんなこと書く

  • で複数列のプロットを作りたい。
  • でも、xラベルとタイトルがかぶって困る。

解決策

subplots_adjustを使う

概要

例えば、こんなプロットを作りたいとしましょう。左側が正規分布のサンプル、右側がラプラス分布のサンプル。列ごとに平均が異なっています。

見ての通り、xラベルとタイトルがかぶってしまって汚い状態です。これを綺麗にするにはどうすればいいでしょうか?

結論から言うと、subplots_adjustを使うだけでOKです。こんな感じになります。

ただ、ちょっと考え方が難しかったのが、「どこでsubplots_adjustを使えばいいのか?」ということ。

ぼくはpandas.DataFrame.plot()を呼び出してプロットしているので、subplots_adjustの呼び出し位置がよくわからなかったんですよ。

結論的には「プロットがすべて終わった後にsubplots_adjustを呼び出す」が正解でした。イメージ的には、プロットモジュールに直接「行間をあけるように」と命令する感じです。

matplotlibではpltモジュールに命令することがよくあるイメージ。オブジェクト思考をしていると、axesオブジェクトをいじるのでは?と思ってしまいがちですね。

Python

Posted by user