Mise à jour :
Cette fonctionnalité fait désormais partie de la paquet proplot matplotlib que j'ai récemment publié sur pypi. Par défaut, lorsque vous faites des figures, les étiquettes sont "partagées" entre les sous-plans.
Réponse originale :
J'ai découvert une méthode plus robuste :
Si vous connaissez le bottom
y top
kwargs qui sont entrés dans un GridSpec
l'initialisation, ou vous connaissez autrement les positions des bords de vos axes en Figure
vous pouvez également spécifier la position de l'étiquette y en coordonnées Figure
des coordonnées avec une certaine magie de "transformation".
Par exemple :
import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
bottom, top = 0.1, 0.9
fig, axs = plt.subplots(nrows=2, ncols=1, bottom=bottom, top=top)
avepos = 0.5 * (bottom + top)
transform = mtransforms.blended_transform_factory(mtransforms.IdentityTransform(), fig.transFigure) # specify x, y transform
axs[0].yaxis.label.set_transform(transform) # changed from default blend (IdentityTransform(), axs[0].transAxes)
axs[0].yaxis.label.set_position((0, avepos))
axs[0].set_ylabel('Hello, world!')
...et vous devriez voir que l'étiquette s'ajuste toujours correctement de gauche à droite pour éviter de chevaucher d'autres étiquettes, comme d'habitude, mais qu'elle se positionne aussi exactement entre les sous-plans souhaités.
Notamment, si vous omettez le set_position
l'étiquette y apparaît exactement au milieu de la figure. Je suppose que c'est parce que lorsque l'étiquette est finalement dessinée, matplotlib
utilise 0,5 pour le y
sans vérifier si la transformation des coordonnées sous-jacentes a changé.