web-dev-qa-db-ja.com

matplotlibで空白のサブプロットを作成するにはどうすればよいですか?

Matplotlibでサブプロットのグループ(3 x 2など)を作成していますが、データセットが6個未満です。残りのサブプロットを空白にするにはどうすればよいですか?

配置は次のようになります。

+----+----+
| 0,0| 0,1|
+----+----+
| 1,0| 1,1|
+----+----+
| 2,0| 2,1|
+----+----+

これは複数のページで継続する場合がありますが、最終ページでは、たとえば、2,1ボックスに5つのデータセットが空になります。ただし、図は次のように宣言しています。

cfig,ax = plt.subplots(3,2)

したがって、サブプロット2,1のスペースには、目盛りとラベルが付いた軸のデフォルトセットがあります。どうすればそのスペースを空白にし、軸がないようにプログラムでレンダリングできますか?

65
mishaF

必要のない軸は常に非表示にすることができます。たとえば、次のコードは6番目の軸を完全に回転させます。

import matplotlib.pyplot as plt

hf, ha = plt.subplots(3,2)
ha[-1, -1].axis('off')

plt.show()

次の図になります。

enter image description here

または、質問に対する受け入れられた回答を参照してください matplotlibプロットの軸テキストを非表示にする .

104
Chris

much改善された subplot interface は、この質問が最初に尋ねられてからmatplotlibに追加されました。ここで、余分なものを隠すことなく、必要なサブプロットを正確に作成できます。さらに、サブプロットは追加の行または列にまたがることができます。

import pylab as plt

ax1 = plt.subplot2grid((3,2),(0, 0))
ax2 = plt.subplot2grid((3,2),(0, 1))
ax3 = plt.subplot2grid((3,2),(1, 0))
ax4 = plt.subplot2grid((3,2),(1, 1))
ax5 = plt.subplot2grid((3,2),(2, 0))

plt.show()

enter image description here

25
Hooked

Axes.set_visible()メソッドを使用してサブプロットを非表示にすることもできます。

import matplotlib.pyplot as plt
import pandas as pd

fig = plt.figure()
data = pd.read_csv('sampledata.csv')

for i in range(0,6):
ax = fig.add_subplot(3,2,i+1)
ax.plot(range(1,6), data[i])
if i == 5:
    ax.set_visible(False)
4
Nick Hunkins

必要なときにサブプロットを作成するオプションはありますか?

import matplotlib
matplotlib.use("pdf")
import matplotlib.pyplot as plt

plt.figure()
plt.gcf().add_subplot(421)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(422)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(423)
plt.fill([0,0,1,1],[0,1,1,0])
plt.suptitle("Figure Title")
plt.gcf().subplots_adjust(hspace=0.5,wspace=0.5)
plt.savefig("outfig")
1
moooeeeep