Я создал (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,6720588235294118, y0 = 0,53, x1 = 0,9000000000000001, 101 = 0,80 * 101 * 0,8 * 0,88), 101 = 0,8 **
Если выполнить раздел 1, а затем раздел 2, я получу:
Bbox (x0 = 0,7209572530864197, y0 = 0,5704676577986438, x1 = 0,9728583333333332, y1= 0,9773075117370893) Bbox (x0 = 0,7209572530864197, y0 = 0,5704676577986438, x1 = 0,9728583333333332, y1 = 0,9773075117370893)
Если отключить ограничение с ограничением_лайнов:0,53, х1 = 0,9000000000000001, у1 = 0,88) Bbox (х0 = 0,6720588235294118, у0 = 0,53, х1 = 0,9000000000000001, у1 = 0,88)
Положение выше То же при constrained_layout=False
Как получить позицию ax03 нового макета в одном исполнении?