一个图中有多个GridSpec

时间:2017-05-26 15:52:12

标签: python python-3.x matplotlib

我正在使用matplotlib的文档(http://matplotlib.org/users/gridspec.html#adjust-gridspec-layout),在这个特定的例子中,我不理解一个图中两个GridSpec布局背后的逻辑。他们使用的代码的重要部分(省略文本,标题和标签)是

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

f = plt.figure()

gs1 = GridSpec(3, 3)
gs1.update(left=0.05, right=0.48, wspace=0.05)
ax1 = plt.subplot(gs1[:-1, :])
ax2 = plt.subplot(gs1[-1, :-1])
ax3 = plt.subplot(gs1[-1, -1])

gs2 = GridSpec(3, 3)
gs2.update(left=0.55, right=0.98, hspace=0.05)
ax4 = plt.subplot(gs2[:, :-1])
ax5 = plt.subplot(gs2[:-1, -1])
ax6 = plt.subplot(gs2[-1, -1])

这会得到以下结果(http://matplotlib.org/_images/demo_gridspec03.png):enter image description here

默认情况下,这两个GridSpec似乎彼此相邻。我是否遗漏了代码中的内容,明确地这样做了吗?

我尝试添加第三个GridSpec,如下所示:

gs3 = gridspec.GridSpec(3, 3)
ax7 = plt.subplot(gs3[:, 0])
ax8 = plt.subplot(gs3[:, 1:])

但这只是填补了整个数字,前两个GridSpecs已经过了#34;#34;

重述我的问题,图中两个GridSpec的布局是否有一些隐含的逻辑(注意我知道方法GridSpecFromSubplotSpec,但这里没有使用它)?

1 个答案:

答案 0 :(得分:1)

可以使用GridSpec命令调整update范围。使用此行,您可以将GridSpec的第一个Figure限制为gs1.update(left=0.05, right=0.48, wspace=0.05) 的左侧(48%)。

GridSpec

然后,第二个Figure仅限于gs1.update(left=0.55, right=0.98, hspace=0.05)

的右侧
top

同样,您可以使用关键字bottomint __thiscall sub_76FDF3(CMFCTabCtrl *this, int, int) 限制垂直范围。