matplotlib でグラフを保存すると凡例(legend)や軸ラベルが見切れる際の対処方法

matplotlib でグラフを保存すると

  • 凡例(legend)
  • 軸ラベル
  • colormap

が枠からはみ出てファイルに正しく保存できない場合の対処方法です

解決方法だけ列挙しておきます.困った時は片っ端から試してみましょう!

box_inches='tight' をつけてみる (役立ち度:★★★)

基本的にこれで解決するはずです

fig.savefig("output.png", bbox_inches='tight')

tight_layout()  (役立ち度:★★)

fig.tight_layout()
fig.savefig("output.png")

legendを移動させる (役立ち度:★)

plt.legend(bbox_to_anchor=(0.0, 0.5), loc='upper left')

それでいいのか?という気もしますが,まあやっつけ仕事の時は確実な方法です

matplotlib のバージョンを上げる (役立ち度:★★★)

意外と盲点なのですが,原因は matplotlib のバグ,というパターンがあります

legend is not present in the generated image if I use 'tight' for bbox_inches · Issue #10194 · matplotlib/matplotlib · GitHub

このバグは savefig()にbbox_extra_artists=[legend]を指定すると回避できるそうです

plt.savefig('output.png', bbox_extra_artists=[legend,], bbox_inches='tight')

面倒でね.素直に matplotlibをアップデートしましょう