8-4 复杂网格
作者:互联网
subplot/subplots命令主要用于指定等行/列数量的网格,对于不等行列的网格则操作较为繁琐,此时可以使用其他同类命令。
subplot2grid方法
当各行/列仍然是等量拆分,只是各行/列宽度不同时,用subplot2grid方法来设置网格很方便。
matplotlib.pyplot.subplot2grid(shape, loc, rowspan=1, colspan=1)
shape设定整体网格行列数
loc指定网格起点,而rowspan/colspan则用来指定网格跨度
plt.figure()
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan = 3)
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan = 2)
ax5 = plt.subplot2grid((3, 3), (2, 1))
plt.figure()
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan = 3)
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan = 2)
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan = 2)
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax5 = plt.subplot2grid((3, 3), (2, 1))
GridSpec方法
可以说是指定各种不等距复杂网格的专用方法,操作最为便捷。
matplotlib.gridspec.GridSpec(
nrows/ncols : 网格的行/列数
figure : 指定网格将被放置的Figure对象
left/bottom/right/top : 网格四边所对应的图形长宽比例
wspace/hspace : 周边留空大小
width_ratios/height_ratios : 各行/列的大小比例
)
Spec(2, 2, width_ratios=[1, 2], height_ratios=[4, 1])
ax1 = plt.subplot(gs[0])
ax2 = plt.subplot(gs[1])
ax3 = plt.subplot(gs[2])
ax4 = plt.subplot(gs[3])
plt.show()
# 一个复杂的不等距网格案例
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
# 自定义函数,隐藏数轴刻度
def make_ticklabels_invisible(fig):
for i, ax in enumerate(fig.axes):
ax.text(0.5, 0.5, "ax%d" % (i+1), va="center", ha="center")
ax.tick_params(labelbottom=False, labelleft=False)
fig = plt.figure()
gs = GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])
# identical to ax1 = plt.subplot(gs.new_subplotspec((0, 0), colspan=3))
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[-1, 0])
ax5 = plt.subplot(gs[-1, -2])
fig.suptitle("$GridSpec$")
make_ticklabels_invisible(fig)
plt.show()
标签:subplot,plt,gs,subplot2grid,colspan,复杂,网格 来源: https://blog.csdn.net/weixin_47700141/article/details/120934697