Güncelleme:
Bu özellik artık yakın zamanda pypi'de yayınladığım proplot matplotlib paketinin bir parçası . Varsayılan olarak, şekiller oluşturduğunuzda etiketler eksenler arasında "paylaşılır".
Orijinal cevap:
Daha sağlam bir yöntem keşfettim:
Bir başlatmaya giden bottomve topkwarg'ları biliyorsanız GridSpecveya eksenlerinizin Figurekoordinatlarındaki kenar konumlarını biliyorsanız , ilabel konumunu Figurebazı süslü "dönüştürme" sihriyle koordinatlarda da belirtebilirsiniz . Örneğin:
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!')
... ve etiketin , tıpkı normal gibi, onay etiketleriyle örtüşmesini önlemek için sol-sağa uygun şekilde ayarlandığını görmelisiniz - ama şimdi her zaman tam olarak istenen alt noktalar arasında olacak şekilde ayarlanacaktır .
Dahası, kullanmazsanız bile set_position, ilabel varsayılan olarak tam olarak rakamın yarısında görünecektir . Tahminimce bunun nedeni, etiket sonunda çizildiğinde, temel koordinat dönüşümünün değişip değişmediğini kontrol etmeden-koordinat matplotlibiçin 0.5 kullanmasıdır y.