能否在添加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的方法有两种:
- 像第一段代码那样,直接保存
add_gridspec()的返回值 - 先通过该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
相关产品推荐
相关产品推荐

