Memperbarui:
Fitur ini sekarang merupakan bagian dari paket proplot matplotlib yang baru-baru ini saya rilis di pypi. Secara default, saat Anda membuat angka, label "dibagi" di antara sumbu.
Jawaban asli:
Saya menemukan metode yang lebih kuat:
Jika Anda tahu bottom
dan top
kwarg yang masuk ke GridSpec
inisialisasi, atau Anda tahu posisi tepi sumbu Anda dalam Figure
koordinat , Anda juga dapat menentukan posisi ylabel dalam Figure
koordinat dengan sihir "transformasi" yang bagus. Sebagai contoh:
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!')
... dan Anda akan melihat bahwa label masih dengan tepat menyesuaikan kiri-kanan agar tidak tumpang tindih dengan label ticklabel, seperti biasa - tetapi sekarang akan menyesuaikan untuk selalu tepat di antara subplot yang diinginkan.
Selain itu, jika Anda bahkan tidak menggunakan set_position
, ylabel akan muncul secara default tepat di tengah angka . Saya menduga ini karena ketika label akhirnya ditarik, matplotlib
menggunakan 0,5 untuk- y
koordinat tanpa memeriksa apakah transformasi koordinat yang mendasarinya telah berubah.