You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib子图中将较大绘图置于顶部?

调整Matplotlib子图布局:顶部大绘图+下方三个小绘图

要实现顶部放置一个大绘图、下方并排三个小绘图的布局,你需要统一子图的网格系统,让大绘图占据顶部整行,三个小绘图在下方分三列排列。以下是两种简单可行的实现方式:

方法1:使用plt.subplot指定列跨度

直接基于2行3列的网格,让顶部大绘图跨越全部3列,下方三个小绘图分别占据第二行的三个位置:

import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))

# 顶部大绘图:占据2行3列网格的第一行全部3列
ax1 = plt.subplot(2, 3, (1, 3))
# 下方三个小绘图:分别对应第二行的第4、5、6个位置(2行3列网格的索引从1开始)
ax2 = plt.subplot(2, 3, 4)
ax3 = plt.subplot(2, 3, 5)
ax4 = plt.subplot(2, 3, 6)

axes = [ax1, ax2, ax3, ax4]

# 调整子图间距,避免标签/标题重叠
plt.tight_layout()
plt.show()

方法2:使用plt.subplot2grid(更直观的网格定位)

通过指定子图在网格中的起始位置和跨度,实现更清晰的布局控制:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(12, 6))

# 顶部大绘图:从网格(0,0)位置开始,行跨度1,列跨度3(占满第一行)
ax1 = plt.subplot2grid((2, 3), (0, 0), colspan=3)
# 下方三个小绘图:分别在第二行的0、1、2列位置,各占1列
ax2 = plt.subplot2grid((2, 3), (1, 0))
ax3 = plt.subplot2grid((2, 3), (1, 1))
ax4 = plt.subplot2grid((2, 3), (1, 2))

axes = [ax1, ax2, ax3, ax4]

plt.tight_layout()
plt.show()

原代码问题说明

你之前的代码同时混用了2,1,2(2行1列网格的第二行)和2,3,1/2/3(2行3列网格的第一行)两种网格系统,导致大绘图被挤到底部。统一使用2行3列的网格并让大绘图跨列,就能实现你想要的顶部大、下方三小的布局。

内容的提问来源于stack exchange,提问作者wabash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:39:12