2017-11-22 5 views
2

私は6つのグリッドに23のグラフをプロットしようとしていますが、1つの図形は他の図形の2倍の幅を占めています。私はgridspecを使用していますし、私の現在のコードは次のとおりです。pyplot/gridspecを使って単一のサブフィギュアのサイズを増やすには?

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import gridspec 

x = np.arange(0, 7, 0.01) 

fig = plt.figure(figsize=(6, 4)) 
gs = gridspec.GridSpec(nrows=6, ncols=4) 

for n in range(22): 
    ax = fig.add_subplot(gs[n]) 
    ax.plot(x, np.sin(0.2*n*x)) 

corrax = fig.add_subplot(gs[22]) 
fig.tight_layout() 
plt.show() 

これは、次のように生成します。

Figure grid

私はそれが占めるので、一番下の行の右端のプロットの幅を増やしたいですその行の残りのスペース。これを達成する方法はありますか?

答えて

4

スライスを使用して、gridspecから複数の位置を選択することができます。 gs[22:24]

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import gridspec 

x = np.arange(0, 7, 0.01) 

fig = plt.figure(figsize=(6, 4)) 
gs = gridspec.GridSpec(nrows=6, ncols=4) 

for n in range(22): 
    ax = fig.add_subplot(gs[n]) 
    ax.plot(x, np.sin(0.2*n*x)) 

corrax = fig.add_subplot(gs[22:24]) 
corrax.plot(x,np.sin(0.2*22*x), color="crimson", lw=3) 
fig.tight_layout() 
plt.show() 

enter image description here

また、二次元gridspecをスライスすることができます。例えば。 3x3グリッドを作成し、右下隅のプロットを2列2列にするには、gs[1:,1:]のようにスライスすることができます。両方が動作SHOLD

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import gridspec 

x = np.arange(0, 7, 0.01) 

fig = plt.figure(figsize=(6, 4)) 
gs = gridspec.GridSpec(nrows=3, ncols=3) 

for n in range(3): 
    ax = fig.add_subplot(gs[0,n]) 
    ax.plot(x, np.sin(0.2*n*x)) 
    if n !=0: 
     ax = fig.add_subplot(gs[n,0]) 
     ax.plot(x, np.sin(0.2*n*x)) 

corrax = fig.add_subplot(gs[1:,1:]) 
corrax.plot(x,np.sin(0.2*22*x), color="crimson", lw=3) 
fig.tight_layout() 
plt.show() 

enter image description here

+0

感謝を参照してください。行と列の両方に似たようなことをする方法はありますか?具体的には、私は3x3グリッドを作成したいですが、1つの大きなプロットが右下隅の4つのスペースと残りのスペースを占める5つの通常のプロットを占めています。 – ahura

+0

ああ、私は、(0,1,2,3,6)のすべてのnに対して、fig.add_subplot(gs [n])を使ってサブプロットを手作業で追加した後、plt.subplot2grid((3,3) 、(1,1)、colspan = 2、rowspan = 2) – ahura

+1

私はそのケースに対する解答でも答えを更新しました。 – ImportanceOfBeingErnest

0
#corrax = fig.add_subplot(gs[5,2:]) 
corrax = fig.add_subplot(6,4,(23,24)) 

関連する問題