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

如何调整1行2列Matplotlib子图高度,使右侧子图居右下且更小?

实现指定尺寸与位置的Matplotlib子图

报错原因说明

你创建的是1行2列的子图网格,height_ratios的元素数量必须和网格行数一致(即1个),传入[2,1]会因数量不匹配触发ValueError;而只传[3]时,网格仅1行,高度比例无差异化,所以两个子图尺寸一致。

解决方案:使用GridSpec自定义网格

要实现右侧子图尺寸为左侧的1/2且位于右下角,需要用GridSpec拆分出更灵活的网格布局,具体代码如下:

import matplotlib.pyplot as plt

# 创建2行2列的网格,设置宽度比例为2:1(左侧宽度是右侧2倍)
gs = plt.GridSpec(2, 2, width_ratios=[2, 1], height_ratios=[1, 1])

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

# 左侧主图:占据第1、2行的第1列,高度为整个图的高度
ax_main = fig.add_subplot(gs[:, 0])
ax_main.set_title('左侧主图')

# 右下角子图:仅占据第2行的第2列,高度为左侧的1/2,宽度为左侧的1/2
ax_sub = fig.add_subplot(gs[1, 1])
ax_sub.set_title('右下角子图')

# 自动调整子图间距
plt.tight_layout()
plt.show()

效果说明

  • width_ratios=[2,1] 确保右侧子图宽度是左侧的1/2
  • 右侧子图绑定到gs[1,1](第2行第2列),自然处于右下角位置,且高度为左侧主图的1/2(因为网格两行高度比例均为1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:45:56