2017-05-18 8 views
1

軸の配列の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',) 

最初のバージョンのレイアウトが必要ですが、余分な軸は表示されません。

答えて

0

図とは別に軸を作成できます。私はまた、あなたが異なる軸を持つことができるなど、軸をより多くのコントロールを持っているので、このメソッドをお勧めします。

コード:

import numpy as np 
import matplotlib.pyplot as plt 

fig = plt.figure() 
for ii in range(5): 
    ax = fig.add_subplot(4,3,ii+1) 
    ax.scatter(np.random.random(5),np.random.random(5)) 
    ax.set_xlabel('xlabel') 
    ax.set_ylabel('ylabel') 
fig.tight_layout() 
fig.show() 

結果:enter image description here

0

それは(実行される最初のケースからのコードなしで)単独で使用される場合、軸を削除する第二ケースが正常に動作し、図1Fまず、

fig,axs=prep_figure() 
for ii in range(5,12): 
    fig.delaxes(axs[ii]) 
plt.tight_layout() 
plt.savefig('tmpd.pdf',) 
plt.show() 

を保存し、次に示されている第三の場合は、再び、数字がそれを表示する前に保存されている場合は正常に動作し、代わりにそれが見えなくなっての、 ax.axis("off")で軸をオフにします。

fig,axs=prep_figure() 
for ii in range(5,12): 
    axs[ii].axis("off") 
plt.tight_layout() 
plt.savefig('tmph.pdf',) 
plt.show() 

作成したPDFは、どちらの場合も同じである。

enter image description here

関連する問題