加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Matplotlib奇数子图

发布时间:2020-12-16 22:45:17 所属栏目:Python 来源:网络整理
导读:我必须绘制一个有11个子点的图,如下所示.但由于这是一个奇数,我不知道如何处理子图(4,3,12)去除它并将最后2个图放在中心 此外,我想增加子图大小,因为空间太重要了.代码如下. 代码是: plt.close()fig,axes = plt.subplots(nrows=4,ncols=3)plt.tight_layout(

我必须绘制一个有11个子点的图,如下所示.但由于这是一个奇数,我不知道如何处理子图(4,3,12)去除它…并将最后2个图放在中心
此外,我想增加子图大小,因为空间太重要了.代码如下.

enter image description here

代码是:

plt.close()

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

plt.tight_layout(pad=0.05,w_pad=0.001,h_pad=2.0)
ax1 = plt.subplot(431) # creates first axis
ax1.set_xticks([])
ax1.set_yticks([])
ax1.tick_params(labelsize=8) 
i1 = ax1.imshow(IIIm,cmap='hot',extent=(0,2000,2000),vmin=-0.2,vmax=-0.1)
i11 = ax1.plot((0,600),(1000,1000),'k-',linewidth=3)
cb1=plt.colorbar(i1,ax=ax1,ticks=[-0.2,-0.15,-0.1],fraction=0.046,pad=0.04,format='%.3f')
cb1.ax.tick_params(labelsize=8)
ax1.set_title("$n = -3$",y=1.05,fontsize=12)


ax2 = plt.subplot(432) # creates second axis
ax2.set_xticks([])
ax2.set_yticks([])
i2=ax2.imshow(IIm,vmin=-0.1,vmax=0.1)
i22 = ax2.plot((0,linewidth=3)
ax2.set_title("$n = -2$",fontsize=12)
ax2.set_xticklabels([])
ax2.set_yticklabels([])
cb2=plt.colorbar(i2,ax=ax2,ticks=[-0.1,0.0,0.1],format='%.3f')
cb2.ax.tick_params(labelsize=8)

ax3 = plt.subplot(433) # creates first axis
ax3.set_xticks([])
ax3.set_yticks([])
i3 = ax3.imshow(Im,vmin=-1,vmax=-0.2)
i33 = ax3.plot((0,linewidth=3)
ax3.set_title("$n = -1$",fontsize=12)
cb3=plt.colorbar(i3,ax=ax3,ticks=[-1,-0.6,-0.2],format='%.3f')
ax3.set_xticklabels([])
ax3.set_yticklabels([])
cb3.ax.tick_params(labelsize=8)
#plt.gcf().tight_layout()





#plt.tight_layout(pad=0.05,h_pad=2.0)
ax1 = plt.subplot(434) # creates first axis
ax1.set_xticks([])
ax1.set_yticks([])
ax1.tick_params(labelsize=8) 
i1 = ax1.imshow(ZV_0_modeI,cmap=plt.cm.hot,origin="lower",vmax=1)
i11 = ax1.plot((0,1],format='%.2f')
cb1.ax.tick_params(labelsize=8)
ax1.set_title("$n = 0$",fontsize=12)


ax2 = plt.subplot(435) # creates second axis
ax2.set_xticks([])
ax2.set_yticks([])
i2=ax2.imshow(I,vmax=1)
i22 = ax2.plot((0,linewidth=3)
ax2.set_title("$n = 1$",format='%.2f')
cb2.ax.tick_params(labelsize=8)

ax3 = plt.subplot(436) # creates first axis
ax3.set_xticks([])
ax3.set_yticks([])
i3 = ax3.imshow(II,vmax=1)
i33 = ax3.plot((0,linewidth=3)
ax3.set_title("$n = 2$",ticks=[-1.,1.],format='%.2f')
ax3.set_xticklabels([])
ax3.set_yticklabels([])
cb3.ax.tick_params(labelsize=8)
plt.gcf().tight_layout()




plt.tight_layout(pad=0.05,h_pad=2.0)
ax1 = plt.subplot(437) # creates first axis
ax1.set_xticks([])
ax1.set_yticks([])
ax1.tick_params(labelsize=8) 
i1 = ax1.imshow(III,format='%.2f')
cb1.ax.tick_params(labelsize=8)
ax1.set_title("$n = 3$",fontsize=12)

ax2 = plt.subplot(438) # creates second axis
ax2.set_xticks([])
ax2.set_yticks([])
i2=ax2.imshow(IV,linewidth=3)
ax2.set_title("$n = 4$",format='%.2f')
cb2.ax.tick_params(labelsize=8)

ax3 = plt.subplot(439) # creates first axis
ax3.set_xticks([])
ax3.set_yticks([])
i3 = ax3.imshow(V,linewidth=3)
ax3.set_title("$n = 5$",h_pad=2.0)
ax1 = plt.subplot(4,10) # creates first axis
ax1.set_xticks([])
ax1.set_yticks([])
ax1.tick_params(labelsize=8) 
i1 = ax1.imshow(VI,format='%.2f')
cb1.ax.tick_params(labelsize=8)
ax1.set_title("$n = 6$",fontsize=12)

ax2 = plt.subplot(4,11) # creates second axis
ax2.set_xticks([0])
ax2.set_yticks([])
i2=ax2.imshow(VII,linewidth=3)
ax2.set_title("$n = 7$",format='%.2f')
cb2.ax.tick_params(labelsize=8)


plt.savefig('filtre.png',dpi=250,bbox_inches='tight',pad_inches=0.1)

plt.show()
最佳答案
实现所需要的一种方法是使用matplotlibs subplot2grid功能.使用此选项可以设置网格的总大小(在您的情况下为4,3)并选择仅绘制此网格中某些子图中的数据.以下是一个简化示例:

import matplotlib.pyplot as plt

x = [1,2]
y = [3,4]

ax1 = plt.subplot2grid((4,3),(0,0))
ax2 = plt.subplot2grid((4,1))
ax3 = plt.subplot2grid((4,2))
ax4 = plt.subplot2grid((4,(1,0))
ax5 = plt.subplot2grid((4,1))
ax6 = plt.subplot2grid((4,2))
ax7 = plt.subplot2grid((4,(2,0))
ax8 = plt.subplot2grid((4,1))
ax9 = plt.subplot2grid((4,2))
ax10 = plt.subplot2grid((4,(3,0))
ax11 = plt.subplot2grid((4,1))

plt.subplots_adjust(wspace = 0.3,hspace = 0.3) #make the figure look better

ax1.plot(x,y)
ax2.plot(x,y)
ax3.plot(x,y)
ax4.plot(x,y)
ax5.plot(x,y)
ax6.plot(x,y)
ax7.plot(x,y)
ax8.plot(x,y)
ax9.plot(x,y)
ax10.plot(x,y)
ax11.plot(x,y)

plt.show()

这产生了这个数字:

enter image description here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读