इस ट्यूटोरियल में, मैं स्टॉक मार्केट डेटा का उपयोग करते हुए Matplotlib में लाइन प्लॉट, बार प्लॉट और स्कैटर प्लॉट बनाना कवर करता/करती हूँ। ट्यूटोरियल यह मानकर चलता है कि आपको NumPy arrays और pandas DataFrames की कुछ जानकारी है। जब-जब लाइब्रेरी कॉल आएगी, मैं बताऊँगा/बताऊँगी कि वह क्या करती है, लेकिन मुख्य फोकस यहाँ Matplotlib पर है।
सारांश
Matplotlib Python की आधारभूत प्लॉटिंग लाइब्रेरी है — pip install matplotlib से इंस्टॉल करें और import matplotlib.pyplot as plt के रूप में इम्पोर्ट करें
plt.plot(x, y) से लाइन प्लॉट, plt.bar(x, height) से बार प्लॉट, और plt.scatter(x, y) से स्कैटर प्लॉट बनाएं
प्लॉट दिखाने के लिए हमेशा plt.show() कॉल करें, या सेव करने के लिए plt.savefig('filename.png')
plt.title(), plt.xlabel(), plt.ylabel(), और color पैरामीटर से कस्टमाइज़ करें
सतत डेटा के लिए कोलormap (cmap) का उपयोग करें और मल्टी-सीरीज़ प्लॉट्स के लिए plt.legend()
Matplotlib क्या है?
Matplotlib Python में सबसे व्यापक रूप से उपयोग की जाने वाली डेटा विज़ुअलाइज़ेशन लाइब्रेरी है, 2026 तक प्रति माह 50 मिलियन से अधिक डाउनलोड के साथ। यह स्थिर, इंटरैक्टिव और एनिमेटेड प्लॉट्स बनाती है, जिनमें लाइन चार्ट, बार चार्ट, स्कैटर प्लॉट, हिस्टोग्राम आदि शामिल हैं। अधिकांश अन्य Python विज़ुअलाइज़ेशन लाइब्रेरी (Seaborn, pandas plotting, और Plotly के कुछ हिस्से) Matplotlib पर आधारित हैं।
Matplotlib हर विज़ुअल एलिमेंट पर सूक्ष्म-स्तरीय नियंत्रण देता है, जिसका मतलब है कि बेसिक प्लॉट्स के लिए भी अधिक कोड लिखना पड़ सकता है। यदि आपकी प्राथमिकता जल्दी-जल्दी एक्सप्लोरेटरी चार्ट बनाना है, तो Seaborn उच्च-स्तरीय डिफ़ॉल्ट्स देता है जो बॉक्स से बाहर अच्छे लगते हैं। वेब-आधारित इंटरैक्टिव चार्ट्स के लिए Plotly Express एक और विकल्प है जिस पर विचार किया जा सकता है।
इस ट्यूटोरियल के अंत तक, आप नीचे दिखाए गए जैसे लाइन, बार और स्कैटर प्लॉट बनाना सीखेंगे, साथ ही कस्टमाइज़ेशन की बुनियादें: रंग चुनना, लेबल और टाइटल जोड़ना, अक्ष सीमाएँ सेट करना, और तैयार फिगर्स को फ़ाइल में सेव करना।
Matplotlib के साथ शुरुआत
बिना देर किए, आइए Matplotlib लोड करें और इस ट्यूटोरियल में उपयोग किए गए डेटासेट पर एक त्वरित नज़र डालें।
Matplotlib लोड करना
कोई भी प्लॉट बनाने से पहले, आपको लाइब्रेरी इम्पोर्ट करनी होगी। pyplot सबमॉड्यूल इस ट्यूटोरियल में इस्तेमाल होने वाले सभी प्लॉटिंग फ़ंक्शन प्रदान करता है।
परंपरा है कि pyplot को plt उपनाम दिया जाता है। मैं यहाँ pandas, NumPy और datetime भी इम्पोर्ट करता/करती हूँ क्योंकि आगे इनके उपयोग होंगे।
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from datetime import datetimeसंचालित द्वारा
DJIA इंडेक्स डेटासेट लोड करना
Matplotlib NumPy arrays और pandas dataframes के साथ काम करने के लिए डिज़ाइन किया गया है। यह लाइब्रेरी सारणीबद्ध डेटा से ग्राफ़ बनाना आसान बनाती है। इस ट्यूटोरियल में, हम Dow Jones Industrial Average (DJIA) इंडेक्स के 2022-01-01 से 2022-12-31 तक के ऐतिहासिक दामों का उपयोग करेंगे (यहाँ उपलब्ध)। आप पेज पर दिनांक सीमा सेट कर सकते हैं और फिर “download a spreadsheet” बटन पर क्लिक कर सकते हैं।
हम pandas लाइब्रेरी का उपयोग करके HistoricalPrices.csv नामक CSV फ़ाइल लोड करेंगे और .head() मेथड से शुरुआती पंक्तियाँ देखेंगे।
import pandas as pd
djia_data = pd.read_csv('HistoricalPrices.csv')
djia_data.head()संचालित द्वारा
हम देखते हैं कि डेटा में 4 कॉलम हैं: Date, Open, High, Low, और Close। बाद के 4 कॉलम ट्रेडिंग डे के दौरान इंडेक्स के दाम से संबंधित हैं। नीचे प्रत्येक वेरिएबल का संक्षिप्त विवरण है।
Date: वह दिन जिसका स्टॉक प्राइस संबंधी डेटा प्रतिनिधित्व करता है।
Open: 9:30 AM ET पर, जब स्टॉक मार्केट खुलता है, DJIA का दाम।
High: दिन के दौरान DJIA द्वारा प्राप्त सबसे ऊँचा दाम।
Low: दिन के दौरान DJIA द्वारा प्राप्त सबसे कम दाम।
Close: 4:00 PM ET पर, जब मार्केट ट्रेडिंग बंद होती है, DJIA का दाम।
एक त्वरित सफाई कदम के रूप में, हमें pandas के rename() मेथड का उपयोग भी करना होगा, क्योंकि डाउनलोड किए गए डेटासेट में कॉलम नामों में एक अतिरिक्त स्पेस है।
djia_data = djia_data.rename(columns ={' Open':'Open',' High':'High',' Low':'Low',' Close':'Close'})संचालित द्वारा
हम Date कॉलम को datetime प्रकार में भी कन्वर्ट करते हैं और तारीख के अनुसार आरोही क्रम में सॉर्ट करते हैं। डेटा टाइप कन्वर्ज़न पर अधिक जानकारी के लिए Python Data Type Conversion ट्यूटोरियल देखें।
djia_data['Date']= pd.to_datetime(djia_data['Date'])
djia_data = djia_data.sort_values(by ='Date')संचालित द्वारा
Matplotlib के साथ लाइन प्लॉट बनाना
लाइन प्लॉट दिखाते हैं कि मान किसी सतत आयाम पर, अधिकतर समय के साथ, कैसे बदलते हैं। ये टाइम सीरीज़ डेटा के लिए प्रमुख चार्ट हैं क्योंकि जुड़े हुए बिंदु ट्रेंड, सीज़नैलिटी और विसंगतियों को तुरंत दिखा देते हैं।
एकल रेखा वाले लाइन प्लॉट
हम Matplotlib में plt.plot() मेथड का उपयोग करके लाइन प्लॉट बना सकते हैं, जहाँ पहला आर्ग्युमेंट x वेरिएबल और दूसरा आर्ग्युमेंट y वेरिएबल होता है। जब भी हम कोई प्लॉट बनाते हैं, हमें plt.show() कॉल करना सुनिश्चित करना चाहिए ताकि बना हुआ ग्राफ़ दिखे। हम DJIA के समय के साथ क्लोज़िंग प्राइस को विज़ुअलाइज़ करेंगे।
plt.plot(djia_data['Date'], djia_data['Close'])
plt.show()संचालित द्वारा
हम देख सकते हैं कि वर्ष के दौरान इंडेक्स प्राइस अपनी सबसे ऊँची वैल्यू से शुरू हुआ, जिसके बाद साल भर ऊपर-नीचे उतार-चढ़ाव रहा। अक्टूबर के आसपास दाम सबसे निचले स्तर पर थे, जिसके बाद वर्ष के अंत में मज़बूत बढ़त दिखी।
एकाधिक रेखाओं वाले लाइन प्लॉट
हम plt.show() फ़ंक्शन से पहले एक और plt.plot() कॉल जोड़कर एक ही प्लॉट पर कई रेखाएँ दिखा सकते हैं।
plt.plot(djia_data['Date'], djia_data['Open'])
plt.plot(djia_data['Date'], djia_data['Close'])
plt.show()संचालित द्वारा
वर्ष भर में, हम देखते हैं कि DJIA के ओपन और क्लोज़ दाम प्रत्येक दिन के लिए अपेक्षाकृत एक-दूसरे के क़रीब रहे, और कोई स्पष्ट पैटर्न नहीं दिखा कि एक हमेशा दूसरे से ऊपर या नीचे हो।
लीजेंड जोड़ना
यदि हम यह बताना चाहें कि कौन-सी रेखा किस कॉलम का प्रतिनिधित्व करती है, तो हम एक लीजेंड जोड़ सकते हैं। यह ग्राफ़ के कोने में रंग-कोडित लेबल बनाता है। हम plt.legend() का उपयोग कर सकते हैं और प्रत्येक plt.plot() कॉल में label पैरामीटर जोड़ सकते हैं।
अब हमें शीर्ष-दाएँ डिफ़ॉल्ट लोकेशन पर निर्दिष्ट लेबल के साथ एक लीजेंड दिखाई देता है (स्थान को plt.legend() में loc आर्ग्युमेंट द्वारा निर्दिष्ट किया जा सकता है)।
Matplotlib के साथ बार प्लॉट बनाना
बार प्लॉट श्रेणियों के बीच संख्यात्मक मानों की तुलना करने के लिए बहुत उपयोगी होते हैं। ये सबसे बड़े और सबसे छोटे श्रेणियों की पहचान करने में विशेष रूप से सहायक हैं।
इस सेक्शन के लिए, हम pandas की .groupby() का उपयोग करके डेटा को मासिक औसत में एग्रीगेट करते हैं ताकि हम DJIA के मासिक प्रदर्शन की तुलना कर सकें। ग्रुपिंग ऑपरेशंस पर गहराई से देखने के लिए Pandas GroupBy ट्यूटोरियल देखें।
# Import the calendar package from calendar import month_name
# Order by months by chronological order
djia_data['Month']= pd.Categorical(djia_data['Date'].dt.month_name(), month_name[1:])# Group metrics by monthly averages
djia_monthly_mean = djia_data \
.groupby('Month') \
.mean(numeric_only=True) \
.reset_index()
djia_monthly_mean.head(6)संचालित द्वारा
वर्टिकल बार प्लॉट
हम वर्टिकल बार्स के साथ बार चार्ट बनाकर शुरू करेंगे। यह plt.bar() मेथड से किया जा सकता है, जिसमें पहला आर्ग्युमेंट x-अक्ष वेरिएबल (Month) होता है और height पैरामीटर y-अक्ष (Close) होता है। इसके बाद, प्लॉट दिखाने के लिए plt.show() कॉल करना सुनिश्चित करें।
plt.bar(djia_monthly_mean['Month'], height = djia_monthly_mean['Close'])
plt.show()संचालित द्वारा
हम देखते हैं कि DJIA के अधिकांश क्लोज़िंग दाम एक-दूसरे के क़रीब थे, जिसमें जून में औसत क्लोज़िंग वैल्यू सबसे कम और जनवरी में सबसे अधिक थी।
बार प्लॉट में बार्स का पुन: क्रम निर्धारण
यदि हम इन बार्स को उच्चतम से निम्नतम मासिक औसत क्लोज़ प्राइस के क्रम में दिखाना चाहें, तो हम pandas में sort_values() मेथड का उपयोग करके बार्स को सॉर्ट कर सकते हैं और फिर वही plt.bar() मेथड लगा सकते हैं।
जैसा कि आप देख सकते हैं, यह देखना काफ़ी आसान हो जाता है कि किन महीनों में औसत DJIA क्लोज़िंग प्राइस सबसे अधिक था और किन महीनों में सबसे कम। महीनों के बीच तुलना और रैंकिंग करना भी सरल हो जाता है।
हॉरिज़ॉन्टल बार प्लॉट
कभी-कभी बार चार्ट की व्याख्या करना और लेबल पढ़ना आसान होता है जब हम बार प्लॉट को क्षैतिज बार्स के साथ बनाते हैं। हम यह plt.barh() मेथड से कर सकते हैं।
plt.barh(djia_monthly_mean_srtd['Month'], width = djia_monthly_mean_srtd['Close'])
plt.show()संचालित द्वारा
जैसा कि आप देख सकते हैं, प्रत्येक श्रेणी (माह) के लेबल वर्टिकल बार्स की तुलना में पढ़ने में आसान हैं। हम समूहों के बीच आसानी से तुलना भी कर सकते हैं। जब श्रेणियाँ ज़्यादा हों, तो यह क्षैतिज बार चार्ट विशेष रूप से उपयोगी होता है।
Matplotlib के साथ स्कैटर प्लॉट बनाना
स्कैटर प्लॉट दो संख्यात्मक वेरिएबल्स के बीच संबंध दिखाते हैं। प्रत्येक बिंदु एक ऑब्ज़र्वेशन दर्शाता है, और समग्र पैटर्न यह उजागर करता है कि संबंध रैखिक है, गैर-रैखिक है या नहीं है — जो सीधे आपके मॉडलिंग तकनीक के चुनाव को सूचित करता है।
बेसिक स्कैटर प्लॉट बनाना
अन्य प्लॉट्स की तरह, स्कैटर प्लॉट pyplot.scatter() से बनाया जा सकता है, जहाँ पहला आर्ग्युमेंट x-अक्ष वेरिएबल और दूसरा y-अक्ष वेरिएबल होता है। इस उदाहरण में, हम DJIA के ओपन और क्लोज़ दामों के बीच संबंध देखेंगे।
plt.scatter(djia_data['Open'], djia_data['Close'])
plt.show()संचालित द्वारा
x-अक्ष पर हमारे पास DJIA का ओपन दाम है, और y-अक्ष पर क्लोज़ दाम। जैसा कि अपेक्षित है, ओपन दाम बढ़ने पर हम क्लोज़ दाम में भी मज़बूत बढ़त का संबंध देखते हैं।
ट्रेंड लाइन जोड़ना
अगला, हम ग्राफ़ में एक ट्रेंड लाइन जोड़ेंगे ताकि ओपन और क्लोज़ वेरिएबल्स के बीच रैखिक संबंध को और स्पष्ट रूप से दिखाया जा सके। ऐसा करने के लिए, हम NumPy के polyfit() मेथड और poly1d() का उपयोग करेंगे। पहला मेथड हमें लीस्ट-स्क्वेयर्स बहुपद फिट देता है, जहाँ पहला आर्ग्युमेंट x वेरिएबल, दूसरा y वेरिएबल और तीसरा फिट की डिग्री (रेखीय के लिए 1) है। दूसरा मेथड हमें एक-आयामी बहुपद क्लास देता है, जिसका उपयोग हम plt.plot() से ट्रेंड लाइन बनाने में कर सकते हैं।
z = np.polyfit(djia_data['Open'], djia_data['Close'],1)
p = np.poly1d(z)
plt.scatter(djia_data['Open'], djia_data['Close'])
plt.plot(djia_data['Open'], p(djia_data['Open']))
plt.show()संचालित द्वारा
जैसा कि हम देख सकते हैं, ग्राफ़ की पृष्ठभूमि में रेखा स्कैटरप्लॉट के ट्रेंड का बारीकी से अनुसरण करती है क्योंकि ओपन और क्लोज़ दाम के बीच संबंध काफ़ी रैखिक है। हम देखते हैं कि जैसे-जैसे ओपन दाम बढ़ता है, क्लोज़ दाम भी सामान्यतः समान और रैखिक दर से बढ़ता है।
प्लॉट टाइटल और अक्ष लेबल सेट करना
प्लॉट टाइटल और अक्ष लेबल दर्शक को समझने में मदद करते हैं कि वे कौन-सा डेटा देख रहे हैं। Matplotlib एनोटेशन के लिए plt.title(), plt.xlabel(), और plt.ylabel() प्रदान करता है। यहाँ पिछले स्कैटरप्लॉट में ये तीनों जोड़े गए हैं:
plt.scatter(djia_data['Open'], djia_data['Close'])
plt.title('DJIA 2022: Open vs. Close Price')
plt.xlabel('Open Price ($)')
plt.ylabel('Close Price ($)')
plt.show()संचालित द्वारा
रंग बदलना
रंग चुनाव पठनीयता और महत्व-निर्धारण दोनों को प्रभावित करते हैं। Matplotlib में रंग तीन तरीकों से बताए जा सकते हैं:
नामित रंग:"red", "blue", "steelblue"
Hex कोड:"#f4db9a", "#383c4a"
RGB tuples:(0.49, 0.39, 0.15), (0.12, 0.21, 0.47)
लाइन का रंग बदलना
लाइन प्लॉट के लिए, हम plt.plot() में color एट्रिब्यूट का उपयोग करके रंग बदल सकते हैं। नीचे, हम ओपन प्राइस लाइन का रंग “black” और क्लोज़ प्राइस लाइन का रंग “red” कर रहे हैं।
plt.plot(djia_data['Date'], djia_data['Open'], color ='black')
plt.plot(djia_data['Date'], djia_data['Close'], color ='red')
plt.show()संचालित द्वारा
बार का रंग बदलना
बार्स के लिए, हम color एट्रिब्यूट में एक सूची पास कर सकते हैं ताकि प्रत्येक बार का रंग निर्दिष्ट कर सकें। मान लें कि हम जनवरी के औसत दाम को हाइलाइट करना चाहते हैं ताकि यह दिखा सकें कि औसत क्लोज़ दाम कितना मज़बूत था। हम उस बार को एक अलग रंग देकर उस पर ध्यान आकर्षित कर सकते हैं।
plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'], color =['blue','gray','gray','gray','gray','gray'])
plt.show()संचालित द्वारा
बिंदुओं का रंग बदलना
अंत में, स्कैटर प्लॉट्स के लिए, हम plt.scatter() के color एट्रिब्यूट से रंग बदल सकते हैं। हम जनवरी के सभी बिंदुओं को नीला और बाकी सभी को ग्रे रंग देंगे, ताकि ऊपर वाले विज़ुअल की तरह ही कहानी दिखे।
plt.scatter(djia_data[djia_data['Month']=='January']['Open'], djia_data[djia_data['Month']=='January']['Close'], color ='blue')
plt.scatter(djia_data[djia_data['Month']!='January']['Open'], djia_data[djia_data['Month']!='January']['Close'], color ='gray')
plt.show()संचालित द्वारा
कोलormap का उपयोग
कोलormap Matplotlib में मौजूद बिल्ट-इन रंग स्केल हैं जो संख्यात्मक मानों को रंग ग्रेडिएंट से मैप करते हैं (आधिकारिक दस्तावेज़)। गहराई से जानने के लिए हमारा Matplotlib Colormaps ट्यूटोरियल देखें। कोलormap आमतौर पर सौंदर्य की दृष्टि से एक साथ अच्छे लगते हैं और बढ़ते मानों की कहानी बताने में मदद करते हैं।
नीचे के उदाहरण में, हम c एट्रिब्यूट में क्लोज़ प्राइस (y-वेरिएबल) पास करके और cmap के जरिए plasma कोलormap देकर उसका उपयोग करते हैं। हम देखते हैं कि मान बढ़ने पर संबद्ध रंग और उजला तथा पीला होता जाता है, जबकि कम मान बैंगनी और गहरे रहते हैं।
plt.scatter(djia_data['Open'], djia_data['Close'], c=djia_data['Close'], cmap = plt.cm.plasma)
plt.show()संचालित द्वारा
अक्ष सीमाएँ सेट करना
कभी-कभी किसी प्लॉट में मानों की एक विशेष रेंज को देखना उपयोगी होता है। उदाहरण के लिए, यदि DJIA लगभग $30,000 के आस-पास ट्रेड कर रहा है, तो हमें केवल उसी दाम के आस-पास के व्यवहार की परवाह हो सकती है। हम plt.xlim() और plt.ylim() में टपल पास करके क्रमशः x और y सीमाएँ सेट कर सकते हैं। टपल का पहला मान निचली सीमा और दूसरा मान ऊपरी सीमा होता है।
plt.scatter(djia_data['Open'], djia_data['Close'])
plt.xlim((29000,34000))
plt.ylim((29000,34000))
plt.title('DJIA Open vs Close (Zoomed In)')
plt.xlabel('Open Price ($)')
plt.ylabel('Close Price ($)')
plt.show()संचालित द्वारा
प्लॉट्स सेव करना
जब आपका प्लॉट मनपसंद बन जाए, तो आप उसे फ़ाइल में सेव कर सकते हैं। Matplotlib plt.savefig() के माध्यम से PNG, PDF, SVG और अन्य फॉर्मेट्स का समर्थन करता है। फॉर्मेट फ़ाइल एक्सटेंशन से अनुमानित होता है।
आख़िर में, हम Matplotlib में बनाए गए प्लॉट्स को plt.savefig() मेथड से सेव कर सकते हैं। हम फ़ाइल को ‘png,’ ‘pdf,’ और ‘svg’ सहित कई अलग-अलग फॉर्मेट्स में सेव कर सकते हैं। पहला आर्ग्युमेंट फ़ाइल का नाम है। फॉर्मेट फ़ाइल एक्सटेंशन से निकाला जाता है (या आप format आर्ग्युमेंट से इसे ओवरराइड कर सकते हैं)।
plt.scatter(djia_data['Open'], djia_data['Close'])
plt.savefig('DJIA 2022 Scatterplot Open vs. Close.png')संचालित द्वारा
अंतिम विचार
इस ट्यूटोरियल में लाइन प्लॉट, बार प्लॉट और स्कैटर प्लॉट कवर किए गए — वे तीन चार्ट प्रकार जिन्हें आप सबसे अधिक बार उपयोग करेंगे। Matplotlib को Seaborn या Plotly जैसी उच्च-स्तरीय लाइब्रेरी की तुलना में अधिक कोड चाहिए, लेकिन यह विस्तार आपको फ़िगर के हर तत्व पर पिक्सेल-स्तरीय नियंत्रण देता है।
Matplotlib Python में एक लोकप्रिय डेटा विज़ुअलाइज़ेशन लाइब्रेरी है। इसका उपयोग अक्सर Python में स्थिर, इंटरैक्टिव और एनिमेटेड विज़ुअलाइज़ेशन बनाने के लिए किया जाता है। Matplotlib आपको कुछ पंक्तियों के कोड से प्लॉट्स, हिस्टोग्राम, बार चार्ट, स्कैटर प्लॉट आदि बनाने देता है।
डेटा विज़ुअलाइज़ेशन के लिए मुझे Matplotlib क्यों उपयोग करना चाहिए?⌄
कई कारण हैं। पहला, Matplotlib लचीला है। यह ग्राफ़ और प्लॉट्स की एक विस्तृत शृंखला का समर्थन करता है और NumPy और pandas जैसी कई अन्य Python लाइब्रेरी के साथ अच्छी तरह एकीकृत होता है। दूसरा, यह एक परिपक्व और व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी है, इसलिए इसके पास एक मजबूत समुदाय और बहुत से संसाधन व ट्यूटोरियल उपलब्ध हैं। अंत में, क्योंकि यह Python में है, आप अपने डेटा पाइपलाइनों के हिस्से के रूप में अपने प्लॉट्स को स्वचालित और अनुकूलित कर सकते हैं।
मैं Matplotlib कैसे इंस्टॉल करूँ?⌄
आप Matplotlib को pip, जो Python का पैकेज इंस्टॉलर है, से इंस्टॉल कर सकते हैं। अपना टर्मिनल खोलें और टाइप करें: pip install matplotlib। यदि आप Jupyter नोटबुक का उपयोग कर रहे हैं, तो आप कोड सेल में एक विस्मयादिबोधक चिह्न जोड़कर यह कमांड चला सकते हैं: !pip install matplotlib।
मैं Matplotlib में एक बेसिक प्लॉट कैसे बनाऊँ?⌄
यहाँ एक सरल उदाहरण है। सबसे पहले, आपको Matplotlib लाइब्रेरी इम्पोर्ट करनी होगी। सबसे अधिक उपयोग किया जाने वाला मॉड्यूल pyplot है, जिसे आम तौर पर plt उपनाम से इम्पोर्ट किया जाता है:
plt.plot([1,2,3,4]) plt.ylabel('Some Numbers') plt.show()संचालित द्वारा
इस उदाहरण में, plt.plot([1, 2, 3, 4]) निर्दिष्ट संख्याओं की सूची को प्लॉट करता है। plt.ylabel('Some Numbers') पंक्ति y-अक्ष का लेबल सेट करती है, और plt.show() प्लॉट प्रदर्शित करता है।
इस ट्यूटोरियल में, मैं स्टॉक मार्केट डेटा का उपयोग करते हुए Matplotlib में लाइन प्लॉट, बार प्लॉट और स्कैटर प्लॉट बनाना कवर करता/करती हूँ। ट्यूटोरियल यह मानकर चलता है कि आपको NumPy arrays और pandas DataFrames की कुछ जानकारी है। जब-जब लाइब्रेरी कॉल आएगी, मैं बताऊँगा/बताऊँगी कि वह क्या करती है, लेकिन मुख्य फोकस यहाँ Matplotlib पर है।
सारांश
Matplotlib Python की आधारभूत प्लॉटिंग लाइब्रेरी है —
pip install matplotlibसे इंस्टॉल करें औरimport matplotlib.pyplot as pltके रूप में इम्पोर्ट करेंplt.plot(x, y)से लाइन प्लॉट,plt.bar(x, height)से बार प्लॉट, औरplt.scatter(x, y)से स्कैटर प्लॉट बनाएंप्लॉट दिखाने के लिए हमेशा
plt.show()कॉल करें, या सेव करने के लिएplt.savefig('filename.png')plt.title(),plt.xlabel(),plt.ylabel(), औरcolorपैरामीटर से कस्टमाइज़ करेंसतत डेटा के लिए कोलormap (
cmap) का उपयोग करें और मल्टी-सीरीज़ प्लॉट्स के लिएplt.legend()Matplotlib क्या है?
Matplotlib Python में सबसे व्यापक रूप से उपयोग की जाने वाली डेटा विज़ुअलाइज़ेशन लाइब्रेरी है, 2026 तक प्रति माह 50 मिलियन से अधिक डाउनलोड के साथ। यह स्थिर, इंटरैक्टिव और एनिमेटेड प्लॉट्स बनाती है, जिनमें लाइन चार्ट, बार चार्ट, स्कैटर प्लॉट, हिस्टोग्राम आदि शामिल हैं। अधिकांश अन्य Python विज़ुअलाइज़ेशन लाइब्रेरी (Seaborn, pandas plotting, और Plotly के कुछ हिस्से) Matplotlib पर आधारित हैं।
Matplotlib हर विज़ुअल एलिमेंट पर सूक्ष्म-स्तरीय नियंत्रण देता है, जिसका मतलब है कि बेसिक प्लॉट्स के लिए भी अधिक कोड लिखना पड़ सकता है। यदि आपकी प्राथमिकता जल्दी-जल्दी एक्सप्लोरेटरी चार्ट बनाना है, तो Seaborn उच्च-स्तरीय डिफ़ॉल्ट्स देता है जो बॉक्स से बाहर अच्छे लगते हैं। वेब-आधारित इंटरैक्टिव चार्ट्स के लिए Plotly Express एक और विकल्प है जिस पर विचार किया जा सकता है।
इस ट्यूटोरियल के अंत तक, आप नीचे दिखाए गए जैसे लाइन, बार और स्कैटर प्लॉट बनाना सीखेंगे, साथ ही कस्टमाइज़ेशन की बुनियादें: रंग चुनना, लेबल और टाइटल जोड़ना, अक्ष सीमाएँ सेट करना, और तैयार फिगर्स को फ़ाइल में सेव करना।
Matplotlib के साथ शुरुआत
बिना देर किए, आइए Matplotlib लोड करें और इस ट्यूटोरियल में उपयोग किए गए डेटासेट पर एक त्वरित नज़र डालें।
Matplotlib लोड करना
कोई भी प्लॉट बनाने से पहले, आपको लाइब्रेरी इम्पोर्ट करनी होगी।
pyplotसबमॉड्यूल इस ट्यूटोरियल में इस्तेमाल होने वाले सभी प्लॉटिंग फ़ंक्शन प्रदान करता है।परंपरा है कि
pyplotकोpltउपनाम दिया जाता है। मैं यहाँ pandas, NumPy औरdatetimeभी इम्पोर्ट करता/करती हूँ क्योंकि आगे इनके उपयोग होंगे।DJIA इंडेक्स डेटासेट लोड करना
Matplotlib NumPy arrays और pandas dataframes के साथ काम करने के लिए डिज़ाइन किया गया है। यह लाइब्रेरी सारणीबद्ध डेटा से ग्राफ़ बनाना आसान बनाती है। इस ट्यूटोरियल में, हम Dow Jones Industrial Average (DJIA) इंडेक्स के 2022-01-01 से 2022-12-31 तक के ऐतिहासिक दामों का उपयोग करेंगे (यहाँ उपलब्ध)। आप पेज पर दिनांक सीमा सेट कर सकते हैं और फिर “download a spreadsheet” बटन पर क्लिक कर सकते हैं।
हम
pandasलाइब्रेरी का उपयोग करके HistoricalPrices.csv नामक CSV फ़ाइल लोड करेंगे और.head()मेथड से शुरुआती पंक्तियाँ देखेंगे।हम देखते हैं कि डेटा में 4 कॉलम हैं: Date, Open, High, Low, और Close। बाद के 4 कॉलम ट्रेडिंग डे के दौरान इंडेक्स के दाम से संबंधित हैं। नीचे प्रत्येक वेरिएबल का संक्षिप्त विवरण है।
एक त्वरित सफाई कदम के रूप में, हमें pandas के rename() मेथड का उपयोग भी करना होगा, क्योंकि डाउनलोड किए गए डेटासेट में कॉलम नामों में एक अतिरिक्त स्पेस है।
हम Date कॉलम को
datetimeप्रकार में भी कन्वर्ट करते हैं और तारीख के अनुसार आरोही क्रम में सॉर्ट करते हैं। डेटा टाइप कन्वर्ज़न पर अधिक जानकारी के लिए Python Data Type Conversion ट्यूटोरियल देखें।Matplotlib के साथ लाइन प्लॉट बनाना
लाइन प्लॉट दिखाते हैं कि मान किसी सतत आयाम पर, अधिकतर समय के साथ, कैसे बदलते हैं। ये टाइम सीरीज़ डेटा के लिए प्रमुख चार्ट हैं क्योंकि जुड़े हुए बिंदु ट्रेंड, सीज़नैलिटी और विसंगतियों को तुरंत दिखा देते हैं।
एकल रेखा वाले लाइन प्लॉट
हम Matplotlib में
plt.plot()मेथड का उपयोग करके लाइन प्लॉट बना सकते हैं, जहाँ पहला आर्ग्युमेंट x वेरिएबल और दूसरा आर्ग्युमेंट y वेरिएबल होता है। जब भी हम कोई प्लॉट बनाते हैं, हमेंplt.show()कॉल करना सुनिश्चित करना चाहिए ताकि बना हुआ ग्राफ़ दिखे। हम DJIA के समय के साथ क्लोज़िंग प्राइस को विज़ुअलाइज़ करेंगे।हम देख सकते हैं कि वर्ष के दौरान इंडेक्स प्राइस अपनी सबसे ऊँची वैल्यू से शुरू हुआ, जिसके बाद साल भर ऊपर-नीचे उतार-चढ़ाव रहा। अक्टूबर के आसपास दाम सबसे निचले स्तर पर थे, जिसके बाद वर्ष के अंत में मज़बूत बढ़त दिखी।
एकाधिक रेखाओं वाले लाइन प्लॉट
हम
plt.show()फ़ंक्शन से पहले एक औरplt.plot()कॉल जोड़कर एक ही प्लॉट पर कई रेखाएँ दिखा सकते हैं।वर्ष भर में, हम देखते हैं कि DJIA के ओपन और क्लोज़ दाम प्रत्येक दिन के लिए अपेक्षाकृत एक-दूसरे के क़रीब रहे, और कोई स्पष्ट पैटर्न नहीं दिखा कि एक हमेशा दूसरे से ऊपर या नीचे हो।
लीजेंड जोड़ना
यदि हम यह बताना चाहें कि कौन-सी रेखा किस कॉलम का प्रतिनिधित्व करती है, तो हम एक लीजेंड जोड़ सकते हैं। यह ग्राफ़ के कोने में रंग-कोडित लेबल बनाता है। हम
plt.legend()का उपयोग कर सकते हैं और प्रत्येकplt.plot()कॉल में label पैरामीटर जोड़ सकते हैं।अब हमें शीर्ष-दाएँ डिफ़ॉल्ट लोकेशन पर निर्दिष्ट लेबल के साथ एक लीजेंड दिखाई देता है (स्थान को
plt.legend()मेंlocआर्ग्युमेंट द्वारा निर्दिष्ट किया जा सकता है)।Matplotlib के साथ बार प्लॉट बनाना
बार प्लॉट श्रेणियों के बीच संख्यात्मक मानों की तुलना करने के लिए बहुत उपयोगी होते हैं। ये सबसे बड़े और सबसे छोटे श्रेणियों की पहचान करने में विशेष रूप से सहायक हैं।
इस सेक्शन के लिए, हम pandas की .groupby() का उपयोग करके डेटा को मासिक औसत में एग्रीगेट करते हैं ताकि हम DJIA के मासिक प्रदर्शन की तुलना कर सकें। ग्रुपिंग ऑपरेशंस पर गहराई से देखने के लिए Pandas GroupBy ट्यूटोरियल देखें।
वर्टिकल बार प्लॉट
हम वर्टिकल बार्स के साथ बार चार्ट बनाकर शुरू करेंगे। यह
plt.bar()मेथड से किया जा सकता है, जिसमें पहला आर्ग्युमेंट x-अक्ष वेरिएबल (Month) होता है औरheightपैरामीटर y-अक्ष (Close) होता है। इसके बाद, प्लॉट दिखाने के लिएplt.show()कॉल करना सुनिश्चित करें।हम देखते हैं कि DJIA के अधिकांश क्लोज़िंग दाम एक-दूसरे के क़रीब थे, जिसमें जून में औसत क्लोज़िंग वैल्यू सबसे कम और जनवरी में सबसे अधिक थी।
बार प्लॉट में बार्स का पुन: क्रम निर्धारण
यदि हम इन बार्स को उच्चतम से निम्नतम मासिक औसत क्लोज़ प्राइस के क्रम में दिखाना चाहें, तो हम pandas में sort_values() मेथड का उपयोग करके बार्स को सॉर्ट कर सकते हैं और फिर वही
plt.bar()मेथड लगा सकते हैं।जैसा कि आप देख सकते हैं, यह देखना काफ़ी आसान हो जाता है कि किन महीनों में औसत DJIA क्लोज़िंग प्राइस सबसे अधिक था और किन महीनों में सबसे कम। महीनों के बीच तुलना और रैंकिंग करना भी सरल हो जाता है।
हॉरिज़ॉन्टल बार प्लॉट
कभी-कभी बार चार्ट की व्याख्या करना और लेबल पढ़ना आसान होता है जब हम बार प्लॉट को क्षैतिज बार्स के साथ बनाते हैं। हम यह
plt.barh()मेथड से कर सकते हैं।जैसा कि आप देख सकते हैं, प्रत्येक श्रेणी (माह) के लेबल वर्टिकल बार्स की तुलना में पढ़ने में आसान हैं। हम समूहों के बीच आसानी से तुलना भी कर सकते हैं। जब श्रेणियाँ ज़्यादा हों, तो यह क्षैतिज बार चार्ट विशेष रूप से उपयोगी होता है।
Matplotlib के साथ स्कैटर प्लॉट बनाना
स्कैटर प्लॉट दो संख्यात्मक वेरिएबल्स के बीच संबंध दिखाते हैं। प्रत्येक बिंदु एक ऑब्ज़र्वेशन दर्शाता है, और समग्र पैटर्न यह उजागर करता है कि संबंध रैखिक है, गैर-रैखिक है या नहीं है — जो सीधे आपके मॉडलिंग तकनीक के चुनाव को सूचित करता है।
बेसिक स्कैटर प्लॉट बनाना
अन्य प्लॉट्स की तरह, स्कैटर प्लॉट
pyplot.scatter()से बनाया जा सकता है, जहाँ पहला आर्ग्युमेंट x-अक्ष वेरिएबल और दूसरा y-अक्ष वेरिएबल होता है। इस उदाहरण में, हम DJIA के ओपन और क्लोज़ दामों के बीच संबंध देखेंगे।x-अक्ष पर हमारे पास DJIA का ओपन दाम है, और y-अक्ष पर क्लोज़ दाम। जैसा कि अपेक्षित है, ओपन दाम बढ़ने पर हम क्लोज़ दाम में भी मज़बूत बढ़त का संबंध देखते हैं।
ट्रेंड लाइन जोड़ना
अगला, हम ग्राफ़ में एक ट्रेंड लाइन जोड़ेंगे ताकि ओपन और क्लोज़ वेरिएबल्स के बीच रैखिक संबंध को और स्पष्ट रूप से दिखाया जा सके। ऐसा करने के लिए, हम NumPy के
polyfit()मेथड औरpoly1d()का उपयोग करेंगे। पहला मेथड हमें लीस्ट-स्क्वेयर्स बहुपद फिट देता है, जहाँ पहला आर्ग्युमेंट x वेरिएबल, दूसरा y वेरिएबल और तीसरा फिट की डिग्री (रेखीय के लिए 1) है। दूसरा मेथड हमें एक-आयामी बहुपद क्लास देता है, जिसका उपयोग हम plt.plot() से ट्रेंड लाइन बनाने में कर सकते हैं।जैसा कि हम देख सकते हैं, ग्राफ़ की पृष्ठभूमि में रेखा स्कैटरप्लॉट के ट्रेंड का बारीकी से अनुसरण करती है क्योंकि ओपन और क्लोज़ दाम के बीच संबंध काफ़ी रैखिक है। हम देखते हैं कि जैसे-जैसे ओपन दाम बढ़ता है, क्लोज़ दाम भी सामान्यतः समान और रैखिक दर से बढ़ता है।
प्लॉट टाइटल और अक्ष लेबल सेट करना
प्लॉट टाइटल और अक्ष लेबल दर्शक को समझने में मदद करते हैं कि वे कौन-सा डेटा देख रहे हैं। Matplotlib एनोटेशन के लिए
plt.title(),plt.xlabel(), औरplt.ylabel()प्रदान करता है। यहाँ पिछले स्कैटरप्लॉट में ये तीनों जोड़े गए हैं:रंग बदलना
रंग चुनाव पठनीयता और महत्व-निर्धारण दोनों को प्रभावित करते हैं। Matplotlib में रंग तीन तरीकों से बताए जा सकते हैं:
नामित रंग:
"red","blue","steelblue"Hex कोड:
"#f4db9a","#383c4a"RGB tuples:
(0.49, 0.39, 0.15),(0.12, 0.21, 0.47)लाइन का रंग बदलना
लाइन प्लॉट के लिए, हम plt.plot() में color एट्रिब्यूट का उपयोग करके रंग बदल सकते हैं। नीचे, हम ओपन प्राइस लाइन का रंग “black” और क्लोज़ प्राइस लाइन का रंग “red” कर रहे हैं।
बार का रंग बदलना
बार्स के लिए, हम color एट्रिब्यूट में एक सूची पास कर सकते हैं ताकि प्रत्येक बार का रंग निर्दिष्ट कर सकें। मान लें कि हम जनवरी के औसत दाम को हाइलाइट करना चाहते हैं ताकि यह दिखा सकें कि औसत क्लोज़ दाम कितना मज़बूत था। हम उस बार को एक अलग रंग देकर उस पर ध्यान आकर्षित कर सकते हैं।
बिंदुओं का रंग बदलना
अंत में, स्कैटर प्लॉट्स के लिए, हम
plt.scatter()के color एट्रिब्यूट से रंग बदल सकते हैं। हम जनवरी के सभी बिंदुओं को नीला और बाकी सभी को ग्रे रंग देंगे, ताकि ऊपर वाले विज़ुअल की तरह ही कहानी दिखे।कोलormap का उपयोग
कोलormap Matplotlib में मौजूद बिल्ट-इन रंग स्केल हैं जो संख्यात्मक मानों को रंग ग्रेडिएंट से मैप करते हैं (आधिकारिक दस्तावेज़)। गहराई से जानने के लिए हमारा Matplotlib Colormaps ट्यूटोरियल देखें। कोलormap आमतौर पर सौंदर्य की दृष्टि से एक साथ अच्छे लगते हैं और बढ़ते मानों की कहानी बताने में मदद करते हैं।
नीचे के उदाहरण में, हम
cएट्रिब्यूट में क्लोज़ प्राइस (y-वेरिएबल) पास करके औरcmapके जरिए plasma कोलormap देकर उसका उपयोग करते हैं। हम देखते हैं कि मान बढ़ने पर संबद्ध रंग और उजला तथा पीला होता जाता है, जबकि कम मान बैंगनी और गहरे रहते हैं।अक्ष सीमाएँ सेट करना
कभी-कभी किसी प्लॉट में मानों की एक विशेष रेंज को देखना उपयोगी होता है। उदाहरण के लिए, यदि DJIA लगभग $30,000 के आस-पास ट्रेड कर रहा है, तो हमें केवल उसी दाम के आस-पास के व्यवहार की परवाह हो सकती है। हम
plt.xlim()औरplt.ylim()में टपल पास करके क्रमशः x और y सीमाएँ सेट कर सकते हैं। टपल का पहला मान निचली सीमा और दूसरा मान ऊपरी सीमा होता है।प्लॉट्स सेव करना
जब आपका प्लॉट मनपसंद बन जाए, तो आप उसे फ़ाइल में सेव कर सकते हैं। Matplotlib
plt.savefig()के माध्यम से PNG, PDF, SVG और अन्य फॉर्मेट्स का समर्थन करता है। फॉर्मेट फ़ाइल एक्सटेंशन से अनुमानित होता है।आख़िर में, हम Matplotlib में बनाए गए प्लॉट्स को
plt.savefig()मेथड से सेव कर सकते हैं। हम फ़ाइल को ‘png,’ ‘pdf,’ और ‘svg’ सहित कई अलग-अलग फॉर्मेट्स में सेव कर सकते हैं। पहला आर्ग्युमेंट फ़ाइल का नाम है। फॉर्मेट फ़ाइल एक्सटेंशन से निकाला जाता है (या आपformatआर्ग्युमेंट से इसे ओवरराइड कर सकते हैं)।अंतिम विचार
इस ट्यूटोरियल में लाइन प्लॉट, बार प्लॉट और स्कैटर प्लॉट कवर किए गए — वे तीन चार्ट प्रकार जिन्हें आप सबसे अधिक बार उपयोग करेंगे। Matplotlib को Seaborn या Plotly जैसी उच्च-स्तरीय लाइब्रेरी की तुलना में अधिक कोड चाहिए, लेकिन यह विस्तार आपको फ़िगर के हर तत्व पर पिक्सेल-स्तरीय नियंत्रण देता है।
यहाँ से, मैं हिस्टोग्राम, पाई चार्ट, और कोलormap की ओर अगला कदम बढ़ाने की सलाह देता/देती हूँ। यदि आप एक संरचित गहन अध्ययन चाहते हैं, तो Introduction to Data Visualization with Matplotlib कोर्स चार घंटों में सबप्लॉट्स, स्टाइलिंग और फ़िगर्स साझा करने की प्रक्रिया समझाता है।