किंवदंती रखने ( bbox_to_anchor
)
एक किंवदंती loc
तर्क का उपयोग करके कुल्हाड़ियों के बाउंडिंग बॉक्स के अंदर स्थित है plt.legend
।
उदाहरण के लिए loc="upper right"
सीमांकन बॉक्स के ऊपरी दाहिने कोने में कथा स्थानों जो डिफ़ॉल्ट विस्तार से से (0,0)
करने के लिए (1,1)
कुल्हाड़ियों निर्देशांक में (या बॉक्स अंकन बाउंडिंग में (x0,y0, width, height)=(0,0,1,1)
)।
किंवदंती को कुल्हाड़ियों से बांधने वाले बॉक्स के बाहर रखने के लिए, कथा (x0,y0)
के निचले बाएं कोने में कुल्हाड़ियों के निर्देशांक का एक टपल निर्दिष्ट किया जा सकता है ।
plt.legend(loc=(1.04,0))
हालाँकि, bbox_to_anchor
तर्क का उपयोग करते हुए एक अधिक बहुमुखी दृष्टिकोण बाउंडिंग बॉक्स को मैन्युअल रूप से निर्दिष्ट करना होगा जिसमें किंवदंती को रखा जाना चाहिए । एक खुद को केवल (x0,y0)
बॉक्स के हिस्से की आपूर्ति करने के लिए प्रतिबंधित कर सकता है । यह एक शून्य स्पैन बॉक्स बनाता है, जिसमें से किंवदंती loc
तर्क द्वारा दी गई दिशा में विस्तार करेगी । उदाहरण के लिए
plt.legend (bbox_to_anchor = (1.04,1), loc = "ऊपरी बाएँ")
कुल्हाड़ियों के बाहर किंवदंती को जगह देता है, जैसे कि किंवदंतियों के ऊपरी बाएं कोने को (1.04,1)
कुल्हाड़ियों के निर्देशांक में स्थिति में है।
इसके आगे के उदाहरण नीचे दिए गए हैं, जहां इसके अतिरिक्त विभिन्न तर्कों के बीच परस्पर संबंध जैसे mode
और ncols
दिखाए गए हैं।

l1 = plt.legend(bbox_to_anchor=(1.04,1), borderaxespad=0)
l2 = plt.legend(bbox_to_anchor=(1.04,0), loc="lower left", borderaxespad=0)
l3 = plt.legend(bbox_to_anchor=(1.04,0.5), loc="center left", borderaxespad=0)
l4 = plt.legend(bbox_to_anchor=(0,1.02,1,0.2), loc="lower left",
mode="expand", borderaxespad=0, ncol=3)
l5 = plt.legend(bbox_to_anchor=(1,0), loc="lower right",
bbox_transform=fig.transFigure, ncol=3)
l6 = plt.legend(bbox_to_anchor=(0.4,0.8), loc="upper right")
4-टपल तर्क की व्याख्या कैसे करें bbox_to_anchor
, जैसा l4
कि इस प्रश्न में पाया जा सकता है । mode="expand"
4-ट्यूपल द्वारा दिए गए बाउंडिंग बॉक्स के अंदर क्षैतिज रूप से किंवदंती का विस्तार। एक लंबवत विस्तारित कथा के लिए, यह प्रश्न देखें ।
कभी-कभी कुल्हाड़ियों के निर्देशांक के बजाय आंकड़ा निर्देशांक में बाउंडिंग बॉक्स को निर्दिष्ट करना उपयोगी हो सकता है। यह l5
ऊपर से उदाहरण में दिखाया गया है , जहां bbox_transform
आंकड़े के निचले बाएं कोने में किंवदंती को रखने के लिए तर्क का उपयोग किया जाता है।
प्रोसेसिंग के बाद
कुल्हाड़ियों के बाहर किंवदंती को रखने से अक्सर अवांछित स्थिति पैदा होती है कि यह आंकड़ा कैनवास के बाहर पूरी तरह या आंशिक रूप से होता है।
इस समस्या के समाधान हैं:
सबप्लॉट मापदंडों
को समायोजित करें एक सबप्लॉट मापदंडों को समायोजित कर सकता है, जैसे कि कुल्हाड़ियों को आंकड़े के अंदर कम जगह लेते हैं (और इस तरह किंवदंती के लिए अधिक स्थान छोड़ देते हैं) plt.subplots_adjust
। उदाहरण के लिए
plt.subplots_adjust(right=0.7)
आंकड़ा के दाईं ओर 30% स्थान छोड़ता है, जहां कोई भी किंवदंती रख सकता है।
तंग लेआउट
का उपयोग करके plt.tight_layout
सबप्लॉट मापदंडों को स्वचालित रूप से समायोजित करने की अनुमति देता है जैसे कि आंकड़ा में तत्व आंकड़ा किनारों के खिलाफ तंग बैठते हैं। दुर्भाग्य से, इस ऑटोमैटिज़्म में किंवदंती को ध्यान में नहीं रखा गया है, लेकिन हम एक आयत बॉक्स की आपूर्ति कर सकते हैं जो पूरे सबप्लॉट क्षेत्र (लेबल सहित) में फिट होगा।
plt.tight_layout(rect=[0,0,0.75,1])
आकृतिbbox_inches = "tight"
को सहेजने के
तर्क bbox_inches = "tight"
का plt.savefig
उपयोग इस आंकड़े को बचाने के लिए किया जा सकता है कि कैनवास पर सभी कलाकार (किंवदंती सहित) सहेजे गए क्षेत्र में फिट हैं। यदि आवश्यक हो, तो आंकड़ा आकार स्वचालित रूप से समायोजित किया जाता है।
plt.savefig("output.png", bbox_inches="tight")
- स्वचालित रूप से उपप्लॉट के समायोजन को समायोजित करने का
एक तरीका स्वचालित रूप से उपप्लॉट स्थिति को समायोजित करने का तरीका है कि किंवदंती कैनवास के अंदर फिट होती है बिना आकृति के आकार को बदलने के इस उत्तर में पाया जा सकता है: सटीक आकार और कोई पैडिंग (और कुल्हाड़ियों के बाहर किंवदंती) के साथ आंकड़ा बनाना
ऊपर चर्चा किए गए मामलों के बीच तुलना:

वैकल्पिक
एक फिगर लैजेंड
वन एक्सिस के बजाय फिगर के लिए एक लेजेंड का उपयोग कर सकता है matplotlib.figure.Figure.legend
। यह विशेष रूप से matplotlib संस्करण> = 2.1 के लिए उपयोगी हो गया है, जहाँ किसी विशेष तर्क की आवश्यकता नहीं है
fig.legend(loc=7)
आकृति के विभिन्न अक्षों में सभी कलाकारों के लिए एक किंवदंती बनाने के लिए। किंवदंती को loc
तर्क का उपयोग करके रखा गया है, यह एक कुल्हाड़ी के अंदर कैसे रखा जाता है के समान है, लेकिन पूरे आंकड़े के संदर्भ में - इसलिए यह कुल्हाड़ियों के बाहर कुछ हद तक स्वचालित रूप से होगा। जो कुछ रहता है वह उपपलों को समायोजित करता है जैसे कि किंवदंती और अक्षों के बीच कोई ओवरलैप नहीं है। यहां ऊपर से "सबप्लॉट मापदंडों को समायोजित करें" बिंदु सहायक होगा। एक उदाहरण:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,2*np.pi)
colors=["#7aa0c4","#ca82e1" ,"#8bcd50","#e18882"]
fig, axes = plt.subplots(ncols=2)
for i in range(4):
axes[i//2].plot(x,np.sin(x+i), color=colors[i],label="y=sin(x+{})".format(i))
fig.legend(loc=7)
fig.tight_layout()
fig.subplots_adjust(right=0.75)
plt.show()

समर्पित सबप्लॉट कुल्हाड़ियों के अंदर किंवदंती
का उपयोग bbox_to_anchor
किंवदंती को अपने समर्पित सबप्लॉट कुल्हाड़ियों ( lax
) में जगह देने के लिए होगा । चूंकि किंवदंती उपप्लॉट भूखंड से छोटा होना चाहिए, इसलिए हम gridspec_kw={"width_ratios":[4,1]}
कुल्हाड़ियों के निर्माण में उपयोग कर सकते हैं । हम कुल्हाड़ियों छिपा कर सकते हैं lax.axis("off")
, लेकिन अभी भी में एक पौराणिक कथा डाल दिया। कथा के हैंडल और लेबल के माध्यम से वास्तविक साजिश से प्राप्त करने की आवश्यकता है h,l = ax.get_legend_handles_labels()
, और उसके बाद में पौराणिक कथा के आपूर्ति की जा सकती lax
, subplot lax.legend(h,l)
। एक पूर्ण उदाहरण नीचे है।
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = 6,2
fig, (ax,lax) = plt.subplots(ncols=2, gridspec_kw={"width_ratios":[4,1]})
ax.plot(x,y, label="y=sin(x)")
....
h,l = ax.get_legend_handles_labels()
lax.legend(h,l, borderaxespad=0)
lax.axis("off")
plt.tight_layout()
plt.show()
यह एक भूखंड का निर्माण करता है जो ऊपर से दिए गए भूखंड के समान होता है:

हम पौराणिक कथाओं का उपयोग करने के लिए पहली कुल्हाड़ियों का भी उपयोग कर सकते हैं, लेकिन bbox_transform
किंवदंती कुल्हाड़ियों का उपयोग करें ,
ax.legend(bbox_to_anchor=(0,0,1,1), bbox_transform=lax.transAxes)
lax.axis("off")
इस दृष्टिकोण में, हमें किंवदंती के हैंडल को बाहरी रूप से प्राप्त करने की आवश्यकता नहीं है, लेकिन हमें bbox_to_anchor
तर्क को निर्दिष्ट करने की आवश्यकता है ।
आगे पढ़ने और नोट्स:
- किंवदंतियों के साथ अन्य सामानों के कुछ उदाहरणों के साथ माटप्लोटिब किंवदंती गाइड पर विचार करें ।
- पाई चार्ट के लिए किंवदंतियों को रखने के लिए कुछ उदाहरण कोड सीधे इस प्रश्न के उत्तर में मिल सकते हैं: पायथन - लीज पाई चार्ट के साथ ओवरलैप करता है
loc
तर्क तार के बजाय संख्या है, जो कॉल को कम करने के लिए ले जा सकते हैं, हालांकि, वे बहुत सहज एक दूसरे के लिए मैप नहीं कर रहे हैं। यहाँ संदर्भ के लिए मानचित्रण है:
