अपडेट करें:
यह सुविधा अब proplot matplotlib पैकेज का हिस्सा है जिसे मैंने हाल ही में pypi पर जारी किया है। डिफ़ॉल्ट रूप से, जब आप आंकड़े बनाते हैं, तो कुल्हाड़ियों के बीच लेबल "साझा" होते हैं।
मूल उत्तर:
मैंने एक और अधिक मजबूत तरीका खोजा:
यदि आप को पता है bottom
और top
kwargs कि एक GridSpec
प्रारंभ में चला गया , या आप अन्यथा Figure
निर्देशांक में अपने कुल्हाड़ियों के किनारों की स्थिति जानते हैं , तो आप 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
, तो यलैब डिफ़ॉल्ट रूप से आकृति के आधे हिस्से तक दिखाई देगा । मैं यह अनुमान लगा रहा हूं क्योंकि जब लेबल अंत में तैयार हो जाता है, तो matplotlib
0.5 का उपयोग करता है y
-कोर्डिनेट के लिए यह जांचे बिना कि क्या अंतर्निहित समन्वय परिवर्तन बदल गया है।