Data Visualization

सभी सबप्लाट्स के लिए एकीकृत लिजेंड बनाना: मैटप्लॉटलिब लिजेंड्स में महारथ

Spread the love

मैटप्लॉटलिब विज़ुअलाइज़ेशन बनाने के लिए एक शक्तिशाली पाइथन लाइब्रेरी है। हालाँकि, कई सबप्लॉट्स के साथ काम करते समय, लेजेंड्स का प्रबंधन जटिल हो सकता है। यह लेख आपके सभी सबप्लॉट्स में एक एकल, एकीकृत लेजेंड बनाने के लिए कुशल तरीके प्रदान करता है।

विषयवस्तु की तालिका

मैटप्लॉटलिब में सबप्लॉट्स को समझना

सबप्लॉट्स एक ही चित्र के भीतर कई प्लॉट व्यवस्थित करते हैं। मैटप्लॉटलिब में, आप उन्हें matplotlib.pyplot.subplots() का उपयोग करके बनाते हैं, जो एक चित्र ऑब्जेक्ट और एक्सिस ऑब्जेक्ट्स (प्रति सबप्लॉट एक) की एक सरणी देता है।

import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2)  # सबप्लॉट्स का 2x2 ग्रिड

# प्रत्येक सबप्लॉट पर डेटा प्लॉट करें
axes[0, 0].plot([1, 2, 3], [4, 5, 6], label='Line 1')
axes[0, 1].plot([1, 2, 3], [7, 8, 9], label='Line 2')
axes[1, 0].plot([1, 2, 3], [10, 11, 12], label='Line 1')
axes[1, 1].plot([1, 2, 3], [13, 14, 15], label='Line 2')

plt.show()

यह एक 2×2 ग्रिड बनाता है, प्रत्येक का अपना लेजेंड होता है। हम इन्हें एक एकल लेजेंड में समेकित करेंगे।

विधि 1: fig.legend() का उपयोग करना

सबसे सरल तरीका चित्र ऑब्जेक्ट की legend() विधि का उपयोग करता है। इसके लिए सभी लेजेंड हैंडल और लेबल एकत्र करने की आवश्यकता है।

import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2)

lines1, = axes[0, 0].plot([1, 2, 3], [4, 5, 6], label='Line 1')
lines2, = axes[0, 1].plot([1, 2, 3], [7, 8, 9], label='Line 2')
lines3, = axes[1, 0].plot([1, 2, 3], [10, 11, 12], label='Line 1')
lines4, = axes[1, 1].plot([1, 2, 3], [13, 14, 15], label='Line 2')

# अद्वितीय हैंडल और लेबल एकत्रित करें
handles = [lines1, lines2] 
labels = [h.get_label() for h in handles]

fig.legend(handles, labels, loc='upper right')

plt.show()

नोट: हम लेजेंड में डुप्लिकेट से बचने के लिए केवल अद्वितीय हैंडल का उपयोग करते हैं। loc लेजेंड की स्थिति निर्दिष्ट करता है।

विधि 2: लेजेंड प्लेसमेंट और उपस्थिति को अनुकूलित करना

आप लेजेंड के स्थान, बॉर्डर, फ़ॉन्ट आकार और बहुत कुछ को अनुकूलित कर सकते हैं।

import matplotlib.pyplot as plt

# ... (विधि 1 से प्लॉटिंग कोड) ...

fig.legend(handles, labels, loc='lower center', bbox_to_anchor=(0.5, -0.1), ncol=2, frameon=True, fontsize=12)

plt.show()

यहाँ, हमने लेजेंड को नीचे केंद्र में रखा है, bbox_to_anchor के साथ ऊर्ध्वाधर स्थिति को समायोजित किया है, दो कॉलम (ncol=2) का उपयोग किया है, एक बॉर्डर (frameon=True) जोड़ा है, और फ़ॉन्ट आकार बढ़ाया है।

विधि 3: प्रति सबप्लॉट कई लाइनों को संभालना

एक सबप्लॉट के भीतर कई लाइनों के लिए, सभी प्रासंगिक हैंडल और लेबल एकत्र करें।

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

line1, = ax.plot([1, 2, 3], [4, 5, 6], label='Line 1')
line2, = ax.plot([1, 2, 3], [7, 8, 9], label='Line 2')
line3, = ax.plot([1, 2, 3], [10, 11, 12], label='Line 3')

fig.legend([line1, line2, line3], [line1.get_label(), line2.get_label(), line3.get_label()], loc='best')
plt.show()

निष्कर्ष

सभी सबप्लॉट्स के लिए एक एकल लेजेंड बनाना आपके मैटप्लॉटलिब विज़ुअलाइज़ेशन की स्पष्टता और पठनीयता में सुधार करता है। ऊपर दिखाए गए तरीके, fig.legend() और उचित हैंडल/लेबल प्रबंधन का उपयोग करके, लेजेंड प्लेसमेंट और उपस्थिति पर नियंत्रण प्रदान करते हैं।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

  • प्रश्न: अगर मेरे पास अलग-अलग लाइन स्टाइल हैं तो क्या होगा? उत्तर: लेजेंड स्वचालित रूप से इन अंतरों को दर्शाएगा।
  • प्रश्न: क्या मैं एक ही लेबल के लिए अलग-अलग रंगों का उपयोग कर सकता हूँ? उत्तर: हाँ, लेकिन लेजेंड प्रति लेबल केवल एक रंग दिखाएगा। अंतर करने के लिए अलग लेबल का उपयोग करें।
  • प्रश्न: मेरा लेजेंड प्लॉट्स को ओवरलैप करता है। उत्तर: bbox_to_anchor, loc, फ़ॉन्ट आकार, या चित्र आकार को समायोजित करें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *