用grispec给多个子图定义布局
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:表示子图之间预留的高度量。
- width_ratios:设置坐标系的相对宽度—>每个坐标系的宽度 = 设定值/sum(设定值)
- height_ratios:设置坐标系的相对高度—>每个坐标系的高度 = 设定值/sum(设定值)
导入必要模块:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
创建画布实例
fig_1 = plt.figure()
创建“区域规划图”实例 (nrows)2行(ncols)2列
spec_1 = gridspec.GridSpec(nrows=2, ncols=2, figure=fig_1)
给对应的图创建坐标系
ax1 = fig_1.add_subplot(spec_1[0,0])
ax2 = fig_1.add_subplot(spec_1[0,1])
ax3 = fig_1.add_subplot(spec_1[1,0])
ax4 = fig_1.add_subplot(spec_1[1,1])
1,调整坐标系实例之间纵横向的间距
hspace纵向之间留2,wspace纵向之间留2
spec_1 = gridspec.GridSpec(nrows=2, ncols=2, figure=fig_1,
hspace=2, wspace=2
)
运行结果图:
2,整体伸缩/平移 ,子图各个方向的范围
spec_1 = gridspec.GridSpec(nrows=2, ncols=2, figure=fig_1,
left=0.25, right=0.7, top=0.7, bottom=0.25
)
运行结果图:
3, 按给定比例绘制
spec_1 = gridspec.GridSpec(nrows=2, ncols=2, figure=fig_1,
width_ratios = [3,1],height_ratios = [3,1]
)
运行结果图:
整体代码如下:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
# 创建画布实例
fig_1 = plt.figure()
spec_1 = gridspec.GridSpec(nrows=2, ncols=2, figure=fig_1, # 前两个是将画布分为2行2列
####以下代码分为3种画法,选一种去除#号食用
#1 hspace=2, wspace=2 # 坐标系实例之间纵横向的间距
#2 left=0.25, right=0.7, top=0.7, bottom=0.25 # 整体伸缩/平移
#3 width_ratios = [3,1],height_ratios = [3,1] # 按给定比例画
)
# 给对应的图创建坐标系
ax1 = fig_1.add_subplot(spec_1[0,0])
ax2 = fig_1.add_subplot(spec_1[0,1])
ax3 = fig_1.add_subplot(spec_1[1,0])
ax4 = fig_1.add_subplot(spec_1[1,1])
plt.show()