Как задать размеры Axes?

Для построения графиков мне необходимы три поля Axes:

import matplotlib.pyplot as plt

fig, (ax1, ax2, ax3) = plt.subplots(figsize=(16, 9.5), nrows = 3, sharex=True)

plt.show()

Получаю три одинаковых поля. Но мне необходимо, чтобы чтобы эти Axes имели разные размеры (по высоте и ширине) на одной figure, и при этом сохранялось авто масштабирование на всех полях. Как задать конкретные размеры для ax1, ax2, ax3? Спасибо! исходное состояние

Конечное состояние


Ответы (2 шт):

Автор решения: Tehnorobot

Вот пример разного построения размеров axes:

Есть возможность установить размер фигуры и размер подзаголовков внутри фигуры индивидуально с помощью gridspec_kw:

import matplotlib.pyplot as plt

fig, axs = plt.subplots(2,1,figsize=(9,16), gridspec_kw={'height_ratios': [1, 2]})

axs[0].plot()
axs[1].plot()
→ Ссылка
Автор решения: strawdog

Я не уверен, что это то, что вам нужно, но можно воспользоваться методом mosaic, где вы наглядно для себя можете расположить холсты на фигуре так, как вам нужно:

import matplotlib.pyplot as plt

mosaic = '''
AAAB
CDDB
CEEB
'''
fig = plt.figure(constrained_layout=True)
ax_dict = fig.subplot_mosaic(mosaic) 

Теперь к каждой axes можно обращаться по имени, заданному в переменной mosaic.

введите сюда описание изображения

соответственно, при

mosaic = '''
AAAB
CDDB
CEEB
'''

получите:

введите сюда описание изображения

→ Ссылка