Оновлення:
Ця функція тепер є частиною пакету proplot matplotlib, який я нещодавно випустив на pypi. За замовчуванням, коли ви робите фігури, мітки "розділяються" між осями.
Оригінальна відповідь:
Я виявив більш надійний метод:
Якщо ви знаєте, bottom
і top
kwargs, які пішли в GridSpec
ініціалізацію, або ви іншим чином знаєте положення країв своїх осей за Figure
координатами , ви також можете вказати положення ylabel в Figure
координатах з якоюсь фантазійною магією "перетворення". Наприклад:
import matplotlib.transforms as mtransforms
bottom, top = .1, .9
f, a = plt.subplots(nrows=2, ncols=1, bottom=bottom, top=top)
avepos = (bottom+top)/2
a[0].yaxis.label.set_transform(mtransforms.blended_transform_factory(
mtransforms.IdentityTransform(), f.transFigure # specify x, y transform
)) # changed from default blend (IdentityTransform(), a[0].transAxes)
a[0].yaxis.label.set_position((0, avepos))
a[0].set_ylabel('Hello, world!')
... і ви повинні побачити, що мітка все ще належним чином налаштовується ліво-право, щоб не перекриватись мітками, як звичайно - але тепер вона буде налаштовуватися завжди точно між потрібними субплотами.
Крім того, якщо ви навіть не використовуєте set_position
, ylabel з'явиться за замовчуванням рівно на півдорозі фігури . Я здогадуюсь це тому, що коли остаточно намальовано мітку, він matplotlib
використовує 0,5 для y
-координати, не перевіряючи, чи змінилася основна трансформація координат.