matplotlib的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)
这是一个三行四列的区域规划图
将实例传入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])
紧密布局
plt.tight_layout()
tight_layout(pad=1.08,h_pad=None,w_pad=None,rect=None)
pad:表示画布边缘与子图边缘之间的空白区域大小
h_pad,w_pad:表示相邻子图之间的空白区域大小
rect:把所有坐标系实例打包在一起,整体进行挪动
展示图表
plt.show()