Matplotlib: получить и установить положение осей

В Matlab легко получить и установить положение существующих осей на рисунке:

  pos = get(gca(), 'position')
  set(gca(), 'position', pos)

Как это сделать в Matplotlib?

Мне нужно это по двум причинам:

Это конкретные проблемы, которые я пытаюсь решить:

  • У меня есть столбец подзаголовков, в некоторых из которых есть цветные панели, а некоторые нет, и они не имеют одинаковой ширины, то есть оси X не выравниваются. Цветная панель убирает пространство из осей. Это также происходит в Matlab, и там я бы использовал вышеупомянутый трюк, чтобы сделать все оси одинаково широкими, скопировав ширину из осей с помощью цветной панели тем, у кого нет.

  • добавьте пробел между отдельными подзаголовками с помощью shrinkin осей. Функция adjust_subplots() настраивает все подзадачи одинаково.

Ответ 1

Положение положений осей аналогично в Matplotlib. Вы можете использовать методы get_position и set_position осей .

import matplotlib.pyplot as plt

ax = plt.subplot(111)
pos1 = ax.get_position() # get the original position 
pos2 = [pos1.x0 + 0.3, pos1.y0 + 0.3,  pos1.width / 2.0, pos1.height / 2.0] 
ax.set_position(pos2) # set a new position

Вы также можете посмотреть GridSpec, если вы еще этого не сделали.