更新时间:2022-04-13 来源:黑马程序员 浏览量:
matplotlib的gridspec模块是专门指定画布中子图位置的模块,该模块中包含一个GridSpec类,通过显式地创建GridSpec类对象来自定义画布中子图的布局结构,使得子图能够更好地适应画布。GridSpec类的构造方法的语法格式如下:
GridSpec(nrows, ncols, figure=None, left=None, bottom=None, right=None, top=None, wspace=None, hspace=None, width_rations=None, height_rations=None)
该方法常用参数的含义如下。
.nrows:表示行数。
.ncols:表示列数。
.figure:表示布局的画布。
.left,bottom,right,top:表示子图的范围。
.wspace:表示子图之间预留的宽度量。
.hspace:表示子图之间预留的高度量。
GridSpec类对象的使用方式与数组的使用方式相似,采用索引或切片的形式访问每个布局元素。此外,matplotlib中还为Figure对象提供了快速添加布局结构的方法add_gridspec()。下面分别使用两种方式创建自定义的布局结构。
(1)使用GridSpec()方法创建子图的布局结构
这种方式需要创建子图和GridSpec类对象,之后在调用add_subplot()方法时传入GridSpec类对象即可,具体示例如下。
import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec fig2 = plt.figure() spec2 = gridspec.GridSpec(ncols=2, nrows=2, figure=fig2) f2_ax1 = fig2.add_subplot(spec2[0, 0]) f2_ax2 = fig2.add_subplot(spec2[0, 1]) f2_ax3 = fig2.add_subplot(spec2[1, 0]) f2_ax4 = fig2.add_subplot(spec2[1, 1]) plt.show()
以上示例创建的子图布局如图5-17所示。
图5-17 使用GridSpec()方法创建子图的自定义布局