【问题标题】:Python - different size subplots in matplotlib [duplicate]Python - matplotlib中不同大小的子图[重复]
【发布时间】:2015-10-18 18:06:43
【问题描述】:

我有 4 个子图,我可以在 1 行上绘制 3 个子图,但我无法在第二行添加另一个图,该图必须与 3 个图形的宽度相同。 前 3 位数字:

第二个图,我要补充:

我试试看:

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([])

#这里我添加第四个数字但我不知道我该怎么做......

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()

【问题讨论】:

    标签: python matplotlib subplot


    【解决方案1】:

    使用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')
    

    【讨论】:

      【解决方案2】:

      您应该查看GridSpec 文档,以便在创建轴时更加灵活

      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)
      

      【讨论】:

      • 另请参阅此示例,其中使用subplot2grid 的图形,上面链接的 GridSpec 未涵盖。
      【解决方案3】:
      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-05
        • 2017-03-01
        • 2023-04-06
        • 1970-01-01
        • 2021-10-30
        • 2015-07-15
        相关资源
        最近更新 更多