一、自定义布局
matplotlib 的 gridspec 模块是专门指定画布中子图位置的模块,该模块中包含一个 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 : 表示子图之间预留的高度量。
GridSpec 类对象的使用方式与数组的使用方式相似,采用索引或切片的形式访问每个布局元素。此外,matplotlib 中还为 Figure 对象提供了快速添加布局结构的方法 add_ gridspec() 。
二、共享相邻子图的坐标轴
注意:两个坐标系间共享坐标轴,以刻度范围最大的轴作为共享轴。
当 pyplot 使用 subplots () 函数绘制子图时,可以通过 sharex 或 sharey 参数控制是否共享 x 轴或 y 轴。sharex 或sharey 参数支持 False 或 'none' 、True 或 'all' 、'row'、 'col' 中任一取值, 关于这些取值的含义如下。
True 或 'all' : 表示所有子图之间共享 x 轴或 y 轴。
False 或 'none' : 表示所有子图之间不共享 x 轴或 y 轴。
'row' : 表示每一行的子图之间共享 x 轴或 y 轴。
'col' : 表示每一列的子图之间共享 x 轴或y 轴。
三、示例:利用自定义布局的GridSpec实例,在画布上创建如图所示的坐标系实例
# get_ipython().run_line_magic('matplotlib', 'notebook') 是一种在Python脚本中使用交互式Matplotlib图形的方法。
# 它会在脚本中启用交互式图形,允许用户对图形进行缩放、平移和旋转等操作。
get_ipython().run_line_magic('matplotlib', 'notebook')
# 导入 matplotlib 库中的 pyplot 模块并命名为 plt
import matplotlib.pyplot as plt
# 导入 matplotlib 库中的 gridspec 模块并命名为 gridspec
import matplotlib.gridspec as gridspec
# 设置中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
#1.创建画布实例
fig2 = plt.figure()
#2.创建“区域规划图”实例
spec2 = gridspec.GridSpec(3,4, figure=fig2)
#3.根据给定的“区域规划图”,创建对应的坐标系实例
ax1 = plt.subplot(spec2[0,0:4], sharey = ax5) # sharey 参数是控制是否共享y轴
ax2 = plt.subplot(spec2[1,0:2], sharey = ax5)
ax3 = plt.subplot(spec2[1,2:4], sharey = ax5)
ax4 = plt.subplot(spec2[2,0], polar = True) # 绘制雷达图的函数:polar()
ax5 = plt.subplot(spec2[2,1:4])
# 设置紧密布局
plt.tight_layout(pad=0.5, h_pad=0.01, w_pad=0.4)
# 设置 y 轴标签刻度
plt.yticks([0.00, 0.25, 0.50, 0.75, 1.00])
# 展示图表
plt.show()