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

能否在添加Axes前直接从Matplotlib的Figure中获取GridSpec?

问题描述

先看两段代码:

第一段代码,直接保存add_gridspec()的返回值:

from matplotlib import pyplot as plt

fig = plt.figure()
grid = fig.add_gridspec(2,2)

这里的grid是明确的GridSpec实例。

第二段代码,调用了add_gridspec()但没有保存返回值:

from matplotlib import pyplot as plt

fig = plt.figure()
fig.add_gridspec(2,2)

目前已知的获取与fig关联的GridSpec的方法有两种:

  1. 像第一段代码那样,直接保存add_gridspec()的返回值
  2. 先通过该GridSpec添加子图,再从子图中获取:
axes = fig.add_subplot(grid[0])
grid = axes.get_gridspec()

现在的疑问是:如果想在添加任何Subplot之前,直接从fig中获取GridSpec,是否可行?


回答

不行。Matplotlib的Figure对象不会自动存储通过fig.add_gridspec()创建但未关联子图的GridSpec实例。add_gridspec()的作用只是创建并返回GridSpec对象,并不会把它存入Figure的公开属性集合中。

如果当初调用fig.add_gridspec()时没有保存返回值,在添加子图前,没有官方方法能直接从fig里提取这个已创建的GridSpec。这种情况下,可行的替代方案有两个:

  • 重新调用fig.add_gridspec(2,2)创建一个参数完全相同的新GridSpec实例(布局效果和之前的一致)
  • 回到最初的写法,始终保存add_gridspec()的返回值,这是最直接可靠的方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:30:51