2017-07-07 16 views
1

5行のデータフレームを2行3列(2行3列)にプロットしたいとします。これは私のコードです:しかし、私はそれを取り除きたい6番目の位置(2行目と3列目)に余分な空のプロットがあります。私は最初の行に3つのプロットがあり、2番目の行に2つのプロットがあるように、どうやってそれを取り除くことができるのだろうと思っています。matplotlibサブプロットの余分なプロットを削除します

import matplotlib.pyplot as plt 
fig, axes = plt.subplots(nrows=2, ncols=3) 

fig.set_figheight(8) 
fig.set_figwidth(15) 



df[2].plot(kind='bar',ax=axes[0,0]); axes[0,0].set_title('2') 

df[4].plot(kind='bar',ax=axes[0,1]); axes[0,1].set_title('4') 

df[6].plot(kind='bar',ax=axes[0,2]); axes[0,2].set_title('6') 

df[8].plot(kind='bar',ax=axes[1,0]); axes[1,0].set_title('8') 

df[10].plot(kind='bar',ax=axes[1,1]); axes[1,1].set_title('10') 

plt.setp(axes, xticks=np.arange(len(observations)), xticklabels=map(str,observations), 
     yticks=[0,1]) 

fig.tight_layout() 

Plots

答えて

5

これを試してみてください:サブプロットを作成するための

fig.delaxes(axes[1][2]) 

より柔軟な方法はfig.add_axes()方法です。パラメータはrect座標のリストです:fig.add_axes([x、y、xsize、ysize])。値はキャンバスサイズを基準にした値なので、0.5のxsizeはサブプロットがウィンドウの幅の半分を持つことを意味します。

+0

ありがとうございました。出来た。 2つのプロットを中央に移動する方法を知っていますか? – HimanAB

+0

通常のグリッド以外のサブプロットレイアウトが必要な場合は、通常は 'fig.add_axes()'メソッドを使用する方が簡単です。矩形の座標を(リストとして)とり、単一のAxesオブジェクトを返します。座標はウィンドウサイズに相対的です。イルは私の答えに例を挙げました。 – Johannes

+0

'add_axes'を使用することは、サブプロットを生成するための非常に良い方法でも推奨される方法でもありません。 'plt.subplots'または' Gridspec'のいずれかが行く方法であり、 'delaxes'または' ax.axis( "off") 'を使ってサブプロットを削除するか、隠すことができます。 – ImportanceOfBeingErnest

関連する問題