2013-03-26 11 views
16

matplotlib में, मैं किंवदंती शीर्षक के संरेखण को कैसे समायोजित कर सकता हूं? यह हमेशा केंद्रित है, लेकिन मुझे इसे किंवदंती बॉक्स के साथ गठबंधन करने की आवश्यकता है। मैंने शीर्षक के टेक्स्ट कलाकार के संरेखण को बदलने की कोशिश की जिसका कोई प्रभाव नहीं पड़ा।matplotlib: किंवदंती शीर्षक का संरेखण

from pylab import * 

x = linspace(0, 1) 
plot(x, x, label="1") 
plot(x, x**2, label="2") 
plot(x, x**3, label="3") 
plot(x, sqrt(x), label="square root") 

l = legend(title="Title", loc="best") 
l.get_title().set_ha("left")    # <== does not work 

show() 

सवाल क्या करने पर निर्भर करता है और जो शीर्षक संरेखण के लंगर बिंदु को नियंत्रित करता है: जानकारी के लिए निम्न उदाहरण देखते हैं? संरेखण को "दाएं" या "केंद्र" में बदलना एक उल्लेखनीय प्रभाव है। दूसरा अवलोकन: लंबी शीर्षक तारों के लिए एंकर पॉइंट लीजेंड बॉक्स की बाएं सीमा तक चलता है ...

+0

शीर्षक टेक्स्ट वास्तव में डिफ़ॉल्ट रूप से "बाएं संरेखित" है। संरेखण के लिए लंगर बिंदु पौराणिक कथा के केंद्र में है। क्या कोई एक अलग एंकर पॉइंट निर्दिष्ट कर सकता है? शायद लीजेंड से जुड़े वीपीएकर या एचपीएकर उदाहरण हैं? – Erwin411

+0

मेरे वर्तमान मामले के लिए मेरे पास एक समाधान है: बस 'l.get_title()। Set_ha ("center")' कहें। पाठ को तब रहस्यमय एंकर पॉइंट (जो मोटे तौर पर हैंडल और लेबल ग्रंथों के बीच होता है) के साथ केंद्रित होता है और यह अच्छा लगता है। '" बहुत सुपर लम्बे शीर्षक "के लिए, हालांकि, एंकर पॉइंट बॉक्स के बाएं किनारे पर जाता है ... – Erwin411

+0

वही प्रश्न थे जैसे 'set_ha (' left ')' काम नहीं करता –

उत्तर

5

मुझे लगता है कि आपको set_position((x, y)) विधि का उपयोग करके Text ऑब्जेक्ट को स्थानांतरित करने की आवश्यकता है। x और y की इकाइयां पिक्सल हैं, इसलिए आपको प्रयोग करना होगा कि कौन से मूल्य सही दिखते हैं, या Transform का उपयोग करें। मुझे यकीन नहीं है कि Transforms का संयोजन सबसे उपयोगी हो सकता है।

तो संक्षेप में, कुछ इस तरह काम कर सकते हैं:

l.get_title().set_position((-10, 0)) # -10 is a guess 
+3

धन्यवाद! set_position() वास्तव में शीर्षक को स्थानांतरित करता है। हालांकि, मैं विस्थापन को कड़ी मेहनत नहीं करना चाहूंगा बल्कि बॉक्स के विस्तार से इसकी गणना करूंगा। यह बहुत शामिल हो प्रतीत होता है ... – Erwin411

6

आप पूरा कथा बॉक्स leg._legend_box.align की स्थापना संरेखित कर सकते हैं। यह किंवदंती बॉक्स के अंदर सब कुछ संरेखित करता है, लेकिन प्रभाव वांछित व्यक्ति को केंद्र के बजाय बॉक्स के दोनों तरफ शीर्षक होना चाहिए।

  • वाम गठबंधन

    leg = plt.legend(title="Title") 
    leg._legend_box.align = "left" 
    

    enter image description here

  • राइट गठबंधन

    leg = plt.legend(title="Title") 
    leg._legend_box.align = "right" 
    

    enter image description here

संबंधित मुद्दे