概要
matplotlibでグラフを作るとき、subplots()は便利なのですが、下図のように余分なプロットがあり削除したい場合があると思います。筆者もその場面に遭遇し、そのときに色々と調べたので、解決方法を3つ紹介します。
実装
Google Colabで作成した本記事のコードは、こちらにあります。
方法
2×2plotで右下のプロットを消す場合のコードで簡単に紹介します。おすすめ度は3段階で表示しています。
結論としては、delaxes(ax)が一番良くおすすめ度は3です。というのも、それ専用のモジュールだからです。
ax.set_visible(False)は、他にも使い道があるのでおすすめ度は2です。
ax.set_axis_off()は、軸のみを削除しています。なので、このコードの前後でプロットしていた場合、プロット情報は表示される(プロットされていなくてもプロットの領域は確保される)ので、期待する挙動にならない可能性があるため、おすすめ度は1です。
delaxes(ax)
(おすすめ度★★★)
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2)
fig.delaxes(axs[1, 1])
ax.set_visible(False)
(おすすめ度★★)
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2)
axs[1, 1].set_visible(False)
ax.set_axis_off()
(おすすめ度★)
※プロットの領域は確保されるので、上の2つの手法と厳密には異なります。
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2)
axs[1, 1].set_axis_off()
まとめ
matplotlibのサブプロットを消す方法は色々とあるようですが、好み、おすすめ度、状況などによって適当に選んで快適に使いこなしましょう。
参考資料