2015-07-28 416 views
1

我有4個子圖,我實現了在1行上繪製3個子圖,但是我不能在第二行添加另一個圖,該行必須具有3個數字的相同寬度。 第3個數字: enter image description herePython - matplotlib中不同大小的subplots

第二個數字,我想補充:

enter image description here

我嘗試:

plt.close() 

font={'family':'sans-serif','weight':'normal','size':'14'} 
plt.rc('font',**font) 

fig, axes = plt.subplots(nrows=3, ncols=1) 


plt.tight_layout(pad=0.05, w_pad=0.001, h_pad=2.0) 
ax1 = plt.subplot(231) # creates first axis 

#ax1.text(20, 2500, 'CYCLE :', size=14) 

#ax1.text(1000, 2500, str((image)*50+50), size=14) 

ax1.tick_params(labelsize=8) 
ax1.set_xticks([0,2000,500,1000,1500]) 
ax1.set_yticks([0,2000,500,1000,1500]) 
ax1.tick_params(labelsize=8) 
ax1.imshow(mouchetis[::-1,::],alpha=0.6) 
ax1.imshow(V_exp_invmaskA,cmap='hot',extent=(X.min(),2015,Y.min(),2015), alpha=0.4) 
i1 = ax1.imshow(V_maskA,cmap='hot',extent=(X.min(),2015,Y.min(),2015),alpha=0.8) 
ax1.set_xticklabels([0,2000,500,1000,1500]) 
ax1.set_yticklabels([0,2000,500,1000,1500]) 
ax1.set_title("MASQUE A", y=1.05, fontsize=10) 


ax2 = plt.subplot(232) # creates second axis 
ax2.set_xticks([0,2000,500,1000,1500]) 
ax2.set_yticks([0,2000,500,1000,1500]) 
ax2.imshow(mouchetis[::-1,::],alpha=0.6) 
ax2.imshow(V_exp_invmaskB,cmap='hot',extent=(X.min(),2015,Y.min(),2015), alpha=0.4) 
i2 = ax2.imshow(V_maskB,cmap='hot',extent=(X.min(),2015,Y.min(),2015),alpha=0.8) 
ax2.set_title("MASQUE B", y=1.05, fontsize=10) 
ax2.set_xticklabels([]) 
ax2.set_yticklabels([]) 


ax3 = plt.subplot(233) # creates first axis 
ax3.set_xticks([0,2000,500,1000,1500]) 
ax3.set_yticks([0,2000,500,1000,1500]) 
ax3.imshow(mouchetis[::-1,::],alpha=0.6) 
ax3.imshow(V_exp_invmaskC,cmap='hot',extent=(X.min(),2015,Y.min(),2015), alpha=0.4) 
i3 = ax3.imshow(V_maskC,cmap='hot',extent=(X.min(),2015,Y.min(),2015),alpha=0.8) 
ax3.set_xticklabels([]) 
ax3.set_yticklabels([]) 

#Here我加第四數字,但我不知道我該怎麼辦...

ax4 = plt.subplot(234) 
ax4.plot(cycles,res_meanA,'ko',label='A',markersize=5,markerfacecolor='None') 

ax4.legend(loc=2,prop={'size':12}) 
ax4.subplots_adjust(left=0.15) 
plt.show() 

回答

3

創建軸

ax1 = plt.subplot2grid((2,3),(0,0)) 
ax2 = plt.subplot2grid((2,3),(0,1)) 
ax3 = plt.subplot2grid((2,3),(0,2)) 
ax4 = plt.subplot2grid((2,3),(1,0), colspan=3) 
1
import pylab as pl 
ax1 = pl.subplot(2, 3, 1) 
ax2 = pl.subplot(2, 3, 2) 
ax3 = pl.subplot(2, 3, 3) 
ax4 = pl.subplot(2, 1, 2) 
5

使用gridspec時,你應該有一個看看GridSpec文檔獲取更多的靈活性:

from matplotlib.gridspec import GridSpec 
import matplotlib.pyplot as plt 

fig=plt.figure() 

gs=GridSpec(2,3) # 2 rows, 3 columns 

ax1=fig.add_subplot(gs[0,0]) # First row, first column 
ax2=fig.add_subplot(gs[0,1]) # First row, second column 
ax3=fig.add_subplot(gs[0,2]) # First row, third column 
ax4=fig.add_subplot(gs[1,:]) # Second row, span all columns 

fig.savefig('gridspec.png') 

enter image description here