प्लॉट बनाने का उद्देश्य
डेटा दृश्यीकरण यानी संख्याओं को चार्ट और ग्राफ़ जैसे चित्रों में बदलना। हम प्लॉट इसलिए बनाते हैं कि:
- पैटर्न (बढ़ना, घटना, दोहराना) एक नज़र में दिखते हैं;
- समूहों की तुलना बहुत-सी संख्याएँ पढ़ने से जल्दी होती है;
- अलग-थलग मान (आउटलायर) साफ़ दिखते हैं;
- रिपोर्ट में चित्र समझाना आसान होता है।
import matplotlib.pyplot as plt # pyplot = मैटप्लॉटलिब का प्लॉट वाला भाग
हर चार्ट का तरीका एक है: चार्ट बनाओ, सजाओ, फिर plt.show() या plt.savefig()।
रेखा प्लॉट
रेखा प्लॉट बिंदु लगाकर उन्हें क्रम से जोड़ता है। जब x-अक्ष पर समय या क्रम हो (दिन, महीने, साल) तब इस्तेमाल करें।
month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'] sales = [20, 35, 30, 45, 50, 60] plt.plot(month, sales, color='b', marker='o', linestyle='-', linewidth=2) plt.show()
विकल्प: color, marker ('o', '*', 's'), linestyle ('-', '--', ':'), linewidth, markersize।
बार ग्राफ़
बार ग्राफ़ हर समूह का एक बार बनाता है। ऊँचाई मान दिखाती है। अलग-अलग चीज़ों (विषय, शहर, सामान) की तुलना के लिए।
subject = ['Eng', 'Hindi', 'Maths', 'Sci', 'SSt'] marks = [78, 85, 92, 70, 88] plt.bar(subject, marks, color='teal', width=0.6) plt.barh(subject, marks) # आड़े बार plt.show()
हिस्टोग्राम
हिस्टोग्राम दिखाता है कि मान कैसे फैले हैं। डेटा के दायरे को बराबर भागों में काटते हैं, जिन्हें बिन कहते हैं। हर मान एक बिन में गिरता है, और बार की ऊँचाई बताती है कि वहाँ कितने मान गिरे (बारंबारता)। बार आपस में सटे रहते हैं, क्योंकि दायरे लगातार हैं।
marks = [35,42,48,51,55,58,61,63,66,68,72,74,79,85,93] plt.hist(marks, bins=[30,44,58,72,86,100], edgecolor='black') plt.hist(marks, bins=5) # न्यूनतम से अधिकतम तक 5 बराबर बिन
किनारे पर पड़ा मान (जैसे 58) दाईं ओर वाले बिन में जाता है; सिर्फ़ आख़िरी बिन अपना दायाँ किनारा भी रखता है।
बार ग्राफ़ या हिस्टोग्राम?
बार ग्राफ़: अलग समूह, बारों के बीच जगह। हिस्टोग्राम: एक संख्या-स्तंभ दायरों में कटा, बार सटे हुए।
शीर्षक, लेबल और लेजेंड
plt.plot(month, shopA, label='Shop A')
plt.plot(month, shopB, label='Shop B')
plt.title('Monthly Sales')
plt.xlabel('Month')
plt.ylabel('Sales (in thousand ₹)')
plt.legend() # label= वाले नाम एक डिब्बे में
plt.grid(True)
plt.show()लेजेंड छोटी कुंजी है जो बताती है कि कौन-सा रंग किस रेखा का है। इसके लिए हर plot में label= चाहिए।
पांडास से सीधे प्लॉट
df.plot(kind='line', x='Month', y='Sales') df.plot(kind='bar', x='Subject', y='Marks') df['Marks'].plot(kind='hist', bins=5)
प्लॉट सहेजना
plt.savefig('sales.png') # मौजूदा फ़ोल्डर में PNG चित्र
plt.savefig('c:/charts/sales.pdf') # पूरे पथ के साथ PDFsavefig() को plt.show() से पहले लिखें। show() बंद होने के बाद चित्र ख़ाली हो जाता है और ख़ाली फ़ाइल सहेजी जाती है।
करके देखें: अपने हफ़्ते का चार्ट
7 दिन तक रोज़ फ़ोन पर बिताए मिनट लिखें। दिन बनाम मिनट का रेखा प्लॉट शीर्षक, लेबल और savefig('week.png') के साथ बनाएँ। फिर 10 दोस्तों की ऊँचाई (cm) पूछकर 4 बिन वाला हिस्टोग्राम बनाएँ। चलाने से पहले अनुमान लगाएँ कि कौन-सा बिन सबसे ऊँचा होगा। 3D के कदम 6 में बिन 2, 5 और 7 करके देखें कि आकार कैसे बदलता है।
मुख्य सूत्र और परिभाषाएँ
- import matplotlib.pyplot as plt
- plt.plot(x, y) रेखा · plt.bar(x, h) बार · plt.barh(y, w) · plt.hist(data, bins=n या सूची)
- plt.title() · plt.xlabel() · plt.ylabel() · plt.legend() (label= ज़रूरी)
- plt.savefig('file.png') को plt.show() से पहले
- df.plot(kind='line' | 'bar' | 'hist')
हल किए गए उदाहरण
1. कौन-सा चार्ट ठीक है: (a) 7 दिन का तापमान, (b) 5 विषयों के अंक, (c) 40 छात्रों की ऊँचाई?
(a) रेखा प्लॉट (समय के साथ बदलाव), (b) बार ग्राफ़ (अलग समूह), (c) हिस्टोग्राम (एक संख्या-स्तंभ का फैलाव)।
2. वर्ष [2021, 2022, 2023, 2024] बनाम छात्र [300, 340, 390, 420] का लाल डैश वाला, गोल मार्कर वाला रेखा प्लॉट बनाइए।
plt.plot([2021,2022,2023,2024], [300,340,390,420], color='r', linestyle='--', marker='o'); plt.show()
3. फल ['Apple','Mango','Banana'] की बिक्री [40, 65, 30] का बार ग्राफ़ 'Fruit Sales' शीर्षक और अक्ष लेबल के साथ बनाइए।
plt.bar(['Apple','Mango','Banana'], [40,65,30]); plt.title('Fruit Sales'); plt.xlabel('Fruit'); plt.ylabel('Units sold'); plt.show()
4. marks = [35,42,48,51,55,58,61,63,66,68,72,74,79,85,93], bins=[30,44,58,72,86,100]। हर बिन की बारंबारता निकालिए।
30–44: 35, 42 → 2। 44–58: 48, 51, 55 → 3। 58–72: 58, 61, 63, 66, 68 → 5। 72–86: 72, 74, 79, 85 → 4। 86–100: 93 → 1। कुल 15।
5. Shop A और Shop B की बिक्री एक चार्ट पर लेजेंड के साथ बनाकर 'compare.png' में सहेजिए।
plt.plot(month, a, label='Shop A'); plt.plot(month, b, label='Shop B'); plt.legend(); plt.savefig('compare.png'); plt.show()
6. एक छात्र ने पहले plt.show() और फिर plt.savefig('x.png') लिखा। फ़ाइल ख़ाली है। क्यों, और कैसे सुधारें?
show() चित्र दिखाकर साफ़ कर देता है, इसलिए ख़ाली चित्र सहेजा गया। savefig() को show() से पहले रखें।
आम गलतियाँ
- लगातार संख्या वाले स्तंभ के लिए बार ग्राफ़ बनाना; दायरों में फैलाव देखना हो तो हिस्टोग्राम सही है।
- plot में label= दिए बिना plt.legend() लगाना, जिससे लेजेंड ख़ाली रहता है।
- plt.show() के बाद सहेजना, जिससे ख़ाली चित्र बनता है।
- सोचना कि bins=5 पाँच मान गिनता है; यह 5 दायरे बनाकर हर दायरे के मान गिनता है।