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

为何matplotlib的pyplot.subplots()不支持figwidth参数?

问题原因与解决方案

报错原因

尽管Figure构造函数本身支持figwidth和figheight参数,但pyplot.figure()(包括间接调用它的pyplot.subplots())并未针对这两个参数做适配处理。当你传递这两个参数时,pyplot内部后续的布局调整、bbox相关计算等流程,会默认依赖figsize属性来完成;而直接通过figwidth/figheight创建的Figure对象,不会正确初始化这些依赖流程,最终导致出现'Figure' object has no attribute 'bbox_inches'的错误。

正确实现方式

方式1:用figsize指定宽度+默认高度

matplotlib默认的图表高度为4.8(可通过plt.rcParams['figure.figsize']查看),你可以直接使用figsize参数,组合自定义宽度和默认高度:

import matplotlib.pyplot as plt

# 获取默认高度
default_height = plt.rcParams['figure.figsize'][1]
f, ax = plt.subplots(figsize=(4, default_height))

方式2:直接实例化Figure对象再添加子图

如果一定要使用figwidth参数,可以绕过pyplot上层函数,直接创建Figure实例后手动添加子图:

import matplotlib.pyplot as plt
from matplotlib.figure import Figure

# 用Figure构造函数指定宽度
fig = Figure(figwidth=4)
# 添加子图
ax = fig.add_subplot(111)
# 显示图像
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:45:40