猿问

如何在matplotlib约束布局模式下检索轴的真实位置

我创建了一个 (2x3) 子图并强制它们constrained_layout=True使用下面的代码。我想隐藏 ax03 并在该区域创建其他图形。出于对齐的目的,我曾经ax.get_position获取过 ax03 的轴位置,并使用它add_axes()来制作一个新的轴。但似乎它没有按预期对齐。根据我的观察,get_position()在布局重新安排之前返回轴的位置。


注意:如果我分两部分执行代码,那么我当然可以得到位置。我想在一次执行中实现它。


import matploltib.pyplot as plt


# Section 1

fig, axes = plt.subplots(2, 3, figsize=(7.2, 7.2/1.68), constrained_layout=True)

axes = axes.ravel()

ax01 = axes[0]

ax02 = axes[1]

ax03 = axes[2]

ax11 = axes[3]

ax12 = axes[4]

ax13 = axes[5]


# Section 2

pos = ax03.get_position() # get the original position

width = pos.x1 - pos.x0

height = pos.y1 - pos.y0



print(ax03.get_position())

ax = fig.add_axes([pos.x0, pos.y0, width, height])

print(ax.get_position())    

# it seems the position of ax is the postion before constrained is applied.

这是同时执行第 1 节和第 2 节时得到的结果。职位信息:


Bbox (x0 = 0.6720588235294118, y0 = 0.53, x1 = 0.9000000000000001, y1 = 0.88) Bbox (x0 = 0.6720588235290588235290 = 0.6720588235290 =.010.0010.08).080.08

明月笑刀无情
浏览 118回答 3
3回答

慕斯709654

你确实得到了 的位置ax03,而且位置是正确的。获得相同位置的原因是因为您将 的位置设置ax为与 完全相同的位置ax03。width = pos.x1 - pos.x0height = pos.y1 - pos.y0这将获得 的宽度和高度ax03。ax = fig.add_axes([pos.x0, pos.y0, width, height])这将创建具有相同新的人物x0,y0,width,和height作为ax03。他们在同一个地方。打印位置证实了这一点。
随时随地看视频慕课网APP

相关分类

Python
我要回答