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


86

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のスペースには、目盛りとラベルが付いたデフォルトの軸のセットがあります。そのスペースをプログラムで空白にし、軸を含まないようにするにはどうすればよいですか?

回答:


144

不要な軸はいつでも非表示にできます。たとえば、次のコードは6番目の軸を完全にオフにします。

import matplotlib.pyplot as plt

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

plt.show()

次の図になります。

右下のセルにグラフがレンダリングされていない、グラフの3x2グリッドの画像

または、を保持しながらすべての軸の装飾(目盛りやラベルなど)を非表示にする方法については、matplotlibプロット軸テキストを非表示にするという質問に対する受け入れられた回答を参照してください。


ありがとう-それは実際には私の元の質問にさらに近いです。私はすでに他の答えを受け入れ、それを使用するようにコードを適合させましたが、どちらのアプローチも素晴らしいです。
mishaF 2012

かっこいい、すっきりしているので、それは確かに素晴らしいですadd_subplot()
moooeeeep 2012

これは素晴らしいです!
faCoffee 2017年

これはプロットを示しておらず、これは空白のプロットであると言えます。データがないことを明示的に示すために、データがないプロットを探していました。この答えの簡単な変更はありますか?
Zelphir Kaltstahl 2017

@Zelphir何を求めているのかわかりません。他の5つのプロットはデータのない空のグラフなので、追加で何を求めているのかわかりません。また、これは新しい質問です。今後は、古い回答にコメントするのではなく、新しい質問として質問してください。
クリス

26

多くの改善サブプロットインタフェースは、この質問を最初に頼まれたので、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()

ここに画像の説明を入力してください


うわー-それは素晴らしい改善です。とても簡単です!ありがとう@Hooked!
mishaF 2013年

@Hooked、最後の空白スペースは凡例を追加するのに最適です。そこに伝説を設定する方法を知っていますか?
ステファノ

@Stefano確かにこれを行う方法はありますが、これは新しい質問として提示するのが最適です。この回答を質問にリンクすることもできます(StackOverflowへようこそ!)
フック

7

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)

あなたの答えは、元の軸と拡張されたGeoAxesの両方に最適です!
飛八尾

1

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

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つはplt.subplots_adjust(wspace = 0、hspace = 0)です。それが事後にうまくいくかどうかはわかりません。
mishaF 2012

@mishaF:このアプローチを使用してsubplots_adjust()を実行できます。私の編集を参照してください。
moooeeeep 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.