为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

明月笑刀无情 2021-11-02 15:08:37
我创建了一个 (2x3) 子图并强制它们constrained_layout=True使用下面的代码。我想隐藏 ax03 并在该区域创建其他图形。出于对齐的目的,我曾经ax.get_position获取过 ax03 的轴位置,并使用它add_axes()来制作一个新的轴。但似乎它没有按预期对齐。根据我的观察,get_position()在布局重新安排之前返回轴的位置。注意:如果我分两部分执行代码,那么我当然可以得到位置。我想在一次执行中实现它。import matploltib.pyplot as plt# Section 1fig, 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 2pos = ax03.get_position() # get the original positionwidth = pos.x1 - pos.x0height = pos.y1 - pos.y0print(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
查看完整描述

3 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

你确实得到了 的位置ax03,而且位置是正确的。获得相同位置的原因是因为您将 的位置设置ax为与 完全相同的位置ax03。


width = pos.x1 - pos.x0

height = pos.y1 - pos.y0

这将获得 的宽度和高度ax03。


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

这将创建具有相同新的人物x0,y0,width,和height作为ax03。他们在同一个地方。打印位置证实了这一点。


查看完整回答
反对 回复 2021-11-02
  • 3 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信