web-dev-qa-db-ja.com

matplotlibサブプロットの余分なプロットを削除します

2 x 3の設定(つまり、2行と3列)で5つのデータフレームをプロットします。これは私のコードです。ただし、6番目の位置(2行3列)に余分な空のプロットがあり、それを取り除きます。最初の行に3つのプロットがあり、2番目の行に2つのプロットがあるように、それを削除する方法を考えています。

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

9
HimanAB

これを試して:

_fig.delaxes(axes[1][2])
_

サブプロットを作成するはるかに柔軟な方法は、fig.add_axes()メソッドです。パラメータは、rect座標のリストです:fig.add_axes([x、y、xsize、ysize])。値はキャンバスサイズを基準にしているため、xsizeが0.5の場合、サブプロットの幅はウィンドウの半分になります。

20
Johannes

または、axesメソッドset_axis_off()を使用します。

axes[1,2].set_axis_off()
5
Ketan

削除するプロットがわかっている場合は、次のようにインデックスを指定して削除できます。

axes.flat[-1].set_visible(False) # to remove last plot
1
Jaswanth Kumar