На самом деле, то, что вы хотите, довольно просто ... Вам просто нужно убедиться, что adjustable
установлено на 'box'
на ваших осях, и у вас есть заданное соотношение сторон для осей (что угодно, кроме 'auto'
).
Вы можете сделать это с помощью adjustable
kwarg при создании вспомогательных участков. В качестве альтернативы, вы можете сделать это после их создания, позвонив по номеру ax.set_adjustable('box')
или по номеру ax.set_aspect(aspect, adjustable='box')
(где аспект - либо 'equal'
, либо номер).
Теперь, независимо от того, как изменяется размер фигуры, на вспомогательных участках будет поддерживаться одинаковое соотношение сторон.
Например:
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1, adjustable='box', aspect=0.3)
ax2 = fig.add_subplot(2,1,2)
ax1.plot(range(10))
ax2.plot(range(10))
plt.show()
Теперь сравните, как реагирует нижний субплот на изменение размера, и как реагирует нижний субплот:
Начальный участок
Изменение размера по вертикали:
Изменение размера до горизонтального расположения: