回答:
これらは、単一の整数としてエンコードされたサブプロットグリッドパラメーターです。たとえば、「111」は「1x1グリッド、最初のサブプロット」を意味し、「234」は「2x3グリッド、4番目のサブプロット」を意味します。
の代替形式はadd_subplot(111)
ですadd_subplot(1, 1, 1)
。
subplots()
メソッドの形でより良い代替手段が存在することを知っておく必要があります。
これは、次の図で最もよく説明されると思います。
上記を初期化するには、次のように入力します。
import matplotlib.pyplot as plt
fig = plt.figure()
fig.add_subplot(221) #top left
fig.add_subplot(222) #top right
fig.add_subplot(223) #bottom left
fig.add_subplot(224) #bottom right
plt.show()
コンスタンティンからの答えはスポットですが、より多くの背景のために、この動作はMatlabから継承されます。
Matlabの動作は、Matlabドキュメンテーションの「図の設定-図ごとの複数のプロットの表示」セクションで説明されています。
subplot(m、n、i)は、Figureウィンドウを小さなサブプロットのm行n列の行列に分割し、現在のプロットのサブプロットを選択します。プロットは、Figureウィンドウの一番上の行に沿って番号が付けられ、次に2番目の行、というように番号が付けられます。
import matplotlib.pyplot as plt
plt.figure(figsize=(8,8))
plt.subplot(3,2,1)
plt.subplot(3,2,3)
plt.subplot(3,2,5)
plt.subplot(2,2,2)
plt.subplot(2,2,4)
最初のコードは、3行2列のレイアウトで最初のサブプロットを作成します。
最初の列の3つのグラフは3つの行を示します。2番目のプロットは、同じ列の最初のプロットのすぐ下に続きます。
最後の2つのプロットには(2, 2)
、2番目の列に2行しかないことを示す引数があり、位置パラメーターは行ごとに移動します。
fig.add_subplot(ROW,COLUMN,POSITION)
例
`fig.add_subplot(111)` #There is only one subplot or graph
`fig.add_subplot(211)` *and* `fig.add_subplot(212)`
合計2行、1列なので、2つのサブグラフをプロットできます。その場所は1番目です。合計2行1列なので、2つのサブグラフをプロットできます。その場所は2番目です。
add_subplot()メソッドには、いくつかのコールサインを持っています:
add_subplot(nrows, ncols, index, **kwargs)
add_subplot(pos, **kwargs)
add_subplot(ax)
add_subplot()
<-3.1.0以降呼び出し1と2は、互いに同じことを達成します(上限まで、以下で説明します)。それらを最初に最初の2つの数値(2x2、1x8、3x4など)でグリッドレイアウトを指定すると考えてください。例:
f.add_subplot(3,4,1)
# is equivalent to:
f.add_subplot(341)
両方とも、3行4列の(3 x 4 = 12)サブプロットのサブプロット配置を生成します。各呼び出しの3番目の数値は、左上の1から始まり、右に向かって増加する、返す軸オブジェクトを示します。
このコードは、call 2の使用の制限を示しています。
#!/usr/bin/env python3
import matplotlib.pyplot as plt
def plot_and_text(axis, text):
'''Simple function to add a straight line
and text to an axis object'''
axis.plot([0,1],[0,1])
axis.text(0.02, 0.9, text)
f = plt.figure()
f2 = plt.figure()
_max = 12
for i in range(_max):
axis = f.add_subplot(3,4,i+1, fc=(0,0,0,i/(_max*2)), xticks=[], yticks=[])
plot_and_text(axis,chr(i+97) + ') ' + '3,4,' +str(i+1))
# If this check isn't in place, a
# ValueError: num must be 1 <= num <= 15, not 0 is raised
if i < 9:
axis = f2.add_subplot(341+i, fc=(0,0,0,i/(_max*2)), xticks=[], yticks=[])
plot_and_text(axis,chr(i+97) + ') ' + str(341+i))
f.tight_layout()
f2.tight_layout()
plt.show()
LHSで呼び出し1を使用すると、任意の軸オブジェクトを返すことができますが、RHSで呼び出し2を使用すると、この呼び出しを使用してアクセスできないインデックス= 9、レンダリングサブプロットj)、k)、およびl)までしか返すことができません。
つまり、ドキュメントからこの点を示しています。
posは3桁の整数で、最初の桁は行数、2番目の桁は列数、3番目の桁はサブプロットのインデックスです。つまり、fig.add_subplot(235)はfig.add_subplot(2、3、5)と同じです。このフォームが機能するためには、すべての整数が10未満でなければならないことに注意してください。
まれに、add_subplotが単一の引数で呼び出される場合があります。サブプロットのAxesインスタンスは、現在のFigureで既に作成されていますが、FigureのAxesのリストには作成されていません。
位置引数が渡されない場合、デフォルトは(1、1、1)です。
つまり、fig.add_subplot(111)
問題の通話を再現します。