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

Python中使用matplotlib实现跨两个子图单元格合并子图的方法

实现方案

你需要的跨单元格合并子图布局可通过matplotlib内置的subplot2grid接口快速实现,以下是完整可运行的示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成测试数据
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

fig = plt.figure(figsize=(10, 6))
# 定义2行2列的网格布局
# 第1行第1列位置的子图,不跨行列
ax1 = plt.subplot2grid(shape=(2, 2), loc=(0, 0))
ax1.plot(x, y, 'tab:blue')
ax1.set_title('Axis [0, 0]')
# 第2行第1列位置的子图,不跨行列
ax2 = plt.subplot2grid(shape=(2, 2), loc=(1, 0))
ax2.plot(x, -y, 'tab:green')
ax2.set_title('Axis [1, 0]')
# 第1行第2列位置的子图,跨2行1列
ax3 = plt.subplot2grid(shape=(2, 2), loc=(0, 1), rowspan=2)
ax3.plot(x, y**2, 'tab:red')
ax3.set_title('Axis [0, 1] (rowspan=2)')

# 统一设置坐标轴标签
for ax in [ax1, ax2, ax3]:
    ax.set(xlabel='x-label', ylabel='y-label')

# 隐藏顶部子图的x轴标签、右侧子图的y轴标签,和官方示例效果一致
ax1.label_outer()
ax2.label_outer()
ax3.label_outer()

plt.tight_layout()
plt.show()

参数说明:

  • subplot2grid的shape参数指定整个画布的网格行列数
  • loc参数指定子图左上角在网格中的坐标(行号在前,列号在后)
  • rowspan和colspan参数分别指定子图跨行、跨列的数量,默认都为1

如果需要更灵活的网格比例调整,也可以使用matplotlib.gridspec.GridSpec接口实现,逻辑和上述参数基本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:54:04