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

如何在Matplotlib中实现指定子图布局并保留宽比(含FuncAnimation)

解决方案

可以用matplotlib.gridspec.GridSpec实现你要的布局,既能保留3:1的宽度比例,又能让右侧垂直堆叠两个子图,完全兼容FuncAnimation的动态绘图需求。

替换你原有的子图创建代码即可,具体实现如下:

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

# 创建画布并定义网格布局:2行2列,列宽比例3:1
self.figure = plt.figure(figsize=(16, 9))
gs = GridSpec(2, 2, width_ratios=[3, 1])

# 创建三个子图:左侧占满2行,右侧上下各占1行
self.plot1 = self.figure.add_subplot(gs[0:2, 0])  # 左侧子图
self.plot2 = self.figure.add_subplot(gs[0, 1])     # 右上子图
self.plot3 = self.figure.add_subplot(gs[1, 1])     # 右下子图

关键说明

  • GridSpec(2, 2, width_ratios=[3,1])定义了2行2列的网格结构,列宽比例和你原需求完全一致。
  • gs[0:2, 0]让左侧子图跨越第0到第1行(共2行)、第0列,刚好占满左侧区域。
  • 右侧两个子图分别占据第0行第1列、第1行第1列,自然形成垂直堆叠效果。
  • 后续你的FuncAnimation逻辑可以直接复用这三个子图对象,和原有代码的使用方式完全兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:22:07