Cập nhật:
Tính năng này hiện là một phần của gói matplotlib proplot mà tôi mới phát hành trên pypi. Theo mặc định, khi bạn tạo số liệu, các nhãn được "chia sẻ" giữa các trục.
Câu trả lời gốc:
Tôi phát hiện ra một phương pháp mạnh mẽ hơn:
Nếu bạn biết bottom
và các top
kwarg đã bắt đầu GridSpec
khởi tạo hoặc bạn biết các vị trí cạnh của trục trong Figure
tọa độ , bạn cũng có thể chỉ định vị trí ylabel trong Figure
tọa độ bằng một số phép thuật "biến đổi" lạ mắt. Ví dụ:
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!')
... Và bạn sẽ thấy rằng nhãn vẫn điều chỉnh một cách thích hợp từ trái sang phải để không bị chồng chéo với ticklabels, giống như bình thường - nhưng bây giờ nó sẽ điều chỉnh để luôn chính xác giữa các ô con mong muốn.
Hơn nữa, nếu bạn thậm chí không sử dụng set_position
, ylabel sẽ hiển thị theo mặc định chính xác một nửa con số . Tôi đoán điều này là do khi nhãn cuối cùng được vẽ, matplotlib
sử dụng 0,5 cho y
-coordine mà không kiểm tra xem biến đổi tọa độ cơ bản có thay đổi hay không.