matplotlib的gridspec模块是指定画布中子图位置,包含一个GridSpec类,来自定义画布中子图的布局结构
GridSpec语法如下:
GridSpec(nrows,ncols,figure=None,left=None,bottom=None,right=None,top=None,wspace=None,hspace=None,width_ratios=None,height_ratios=None)
该方法常用参数的含义如下
nrows:表示行数
- ncols:表示列数
- figure:表示布局的画布
- left,bottom,right,top:表示子图的范围
- wspace:表示子图之间预留的宽度量
- hspace:表示子图之间预留的高度量
导入模块
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
#创建子图布局示例
fig=plt.figure()
spec=gridspec.GridSpec(ncols=2,nrows=2,figure=fig)
#创建Gridspec对象,然后将实例传入add_subplot(),gridspec的使用习惯和numpy数组
f_ax1=fig.add_subplot(spec[0,0])
f_ax2=fig.add_subplot(spec[0,1])
f_ax3=fig.add_subplot(spec[1,0])
f_ax4=fig.add_subplot(spec[1,1])
plt.show()
#运行效果如图
实列2
导入模块
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
#创建子图布局示例
spec1 = gridspec.GridSpec(3,4,figure = fig)
#创建Gridspec对象,然后将实例传入plt_subplot()
ax1 = plt.subplot(spec1[0,:]) #在第0行进行绘图
ax2 = plt.subplot(spec1[1,0:2]) #在第1行,第0、1列进行绘图
ax3 = plt.subplot(spec1[1,2:4]) #在第1行,第2、3列进行绘图
ax4 = plt.subplot(spec1[2,0],projection = 'polar') #在第2行,第0列绘制极坐标
ax5 = plt.subplot(spec1[2,1:4])
- pad:表示画布边缘与子图边缘之间的空白区域大小
- h_pad,w_pad:表示相邻子图之间的空白区域大小
- rect:把所有坐标系实例打包在一起,整体进行挪动
tight_layout(pad=1.08,h_pad=None,w_pad=None,rect=None)
plt.show()
效果如图