軸の配列のPDFを作成しています。ページが一杯にならない場合があります。つまり、すべての軸にデータがあるわけではありません。この場合、未使用の軸をPDFに表示しないようにします。しかし、レイアウトを使用しているのと同じにしたい。私はtight_layout()を使用して、オーバーラップしない軸とイザベルを取得しています。不完全な軸配列を持つmatplotlibでtight_layout()を使用する:
次のコードは、軸が使用されている場合を示しています。未使用のものを削除すると(tight_layoutが正しく動作しません)、次に表示されないように設定するとtight_layout )が失敗すると、
AttributeError: 'NoneType' object has no attribute 'is_bbox'
エラーが発生します。
import numpy as np
import matplotlib.pyplot as plt
def prep_figure():
plt.close('all')
fig, axs = plt.subplots(4,3, figsize=(11,8.5))
axs=np.concatenate(axs)
for ii in range(5):
axs[ii].plot([1,2,3],[-10,-1,-10])
axs[ii].set_ylabel('ylabel')
axs[ii].set_xlabel('xlabel')
return fig,axs
fig,axs=prep_figure()
plt.tight_layout()
plt.show()
plt.savefig('tmp.pdf',)
# Try deleting extra axes
fig,axs=prep_figure()
for ii in range(5,12):
fig.delaxes(axs[ii])
plt.tight_layout()
plt.show()
plt.savefig('tmpd.pdf',)
# Try hiding extra axes
fig,axs=prep_figure()
for ii in range(5,12):
axs[ii].set_visible(False)
plt.tight_layout()
plt.show()
plt.savefig('tmph.pdf',)
最初のバージョンのレイアウトが必要ですが、余分な軸は表示されません。