मुख्य सामग्री पर जाएँ

R Histogram ट्यूटोरियल: Base R से प्लॉट्स बनाएं और अनुकूलित करें

base R में hist() फ़ंक्शन का उपयोग करके histogram बनाना और अनुकूलित करना सीखें। रंग, लेबल, बिन्स, density कर्व, और वर्णनात्मक आँकड़े कवर किए गए हैं।
· 10 मि॰ पढ़ें

AI के साथ खोजें

इस ट्यूटोरियल में, मैं आपको R प्रोग्रामिंग भाषा में histogram बनाना और उन्हें अनुकूलित करना सिखाऊँगा। हम जानेंगे कि histogram क्या होता है, डेटा कैसे तैयार करें, एक बेसिक histogram कैसे बनाएं, और रंग, लेबल, बिन्स, तथा अक्ष सीमाएँ कैसे समायोजित करें। 

हम बिना किसी अतिरिक्त पैकेज के base R प्रोग्रामिंग भाषा का उपयोग करेंगे। यह तरीका तब खास तौर पर उपयोगी है जब अतिरिक्त पैकेज इस्तेमाल नहीं किए जा सकते या जब आप त्वरित exploratory विश्लेषण कर रहे हों। अन्य मामलों में, आप ggplot2 का उपयोग करने पर विचार कर सकते हैं, जैसा कि हमारे How to Make a ggplot2 Histogram in R ट्यूटोरियल में कवर किया गया है।

TL;DR

  • कोई अतिरिक्त पैकेज के बिना base R में बेसिक histogram बनाने के लिए hist(x) का उपयोग करें

  • रूप-रंग को col (fill color), border (आउटलाइन), main (शीर्षक), xlab, और ylab से अनुकूलित करें

  • breaks आर्ग्युमेंट से बिनिंग नियंत्रित करें: एक संख्या, breakpoints का वेक्टर, या किसी विधि का नाम दें ("Sturges", "Scott", "Freedman-Diaconis")

  • वर्णनात्मक आँकड़ों को ओवरले करें: mean के लिए abline() और density कर्व के लिए lines(density())

  • समूहित या प्रकाशन-स्तरीय histogram के लिए ggplot2 पर स्विच करें

Histogram क्या है?

Histogram एक ग्राफ है जो सतत (संख्यात्मक) चरों पर आवृत्ति वितरण दिखाता है। Histogram हमें यह देखने देता है कि किसी चर द्वारा लिए गए दायरे के भीतर डेटा में प्रेक्षणों की संख्या कितनी है।

Histogram बार चार्ट जैसे दिखते हैं। दोनों के बीच एक प्रमुख अंतर यह है कि बार चार्ट में किसी विशिष्ट श्रेणी या विविक्त चर से संबंधित मान होता है, जबकि histogram सतत चरों के लिए आवृत्तियों को दर्शाता है। 

Histogram के लिए डेटा तैयार करना

हम इस हाउसिंग डेटासेट का उपयोग करेंगे, जिसमें विभिन्न घरों की सूचियों का विवरण है, जैसे घर का आकार, कमरों की संख्या, कीमत, और लोकेशन की जानकारी। हम read.csv() फ़ंक्शन का उपयोग करके डेटा को पढ़ सकते हैं, या तो सीधे URL से, या csv फ़ाइल को किसी डायरेक्टरी में डाउनलोड कर स्थानीय स्टोरेज से पढ़ सकते हैं। हम यह भी निर्दिष्ट कर सकते हैं कि इस ट्यूटोरियल के लिए केवल उन्हीं कॉलम्स को स्टोर करना है जिनमें हमारी रुचि है: price और condition।

home_data <- read.csv("https://raw.githubusercontent.com/rashida048/Datasets/master/home_data.csv")[ ,c('price', 'condition')]

आइए head() फ़ंक्शन का उपयोग करके डेटा की शुरुआती कुछ पंक्तियाँ देखें।

head(home_data, 5)

R में हाउसिंग डेटासेट की शुरुआती पंक्तियाँ, price और condition कॉलम दिखाते हुए

Base R के साथ Histograms बनाना

अगले चरण में, हम अपने डेटासेट में कीमतों के वितरण को देखने के लिए hist() फ़ंक्शन का उपयोग करके एक histogram बनाएँगे।

hist(home_data$price)

base R में घर की कीमतों का histogram बनाना

घर की कीमतों का मूलभूत histogram। चित्र: लेखक द्वारा।

वर्णनात्मक आँकड़े जोड़ना

हम abline() फ़ंक्शन का उपयोग करके histogram में वर्णनात्मक आँकड़े जोड़ सकते हैं। यह प्लॉट में एक वर्टिकल लाइन जोड़ता है।

  • v आर्ग्युमेंट को x-अक्ष पर उस स्थान पर सेट करें जहाँ वर्टिकल लाइन चाहिए। यहाँ, हम mean() से औसत घर की कीमत प्राप्त कर रहे हैं।

  • col आर्ग्युमेंट लाइन का रंग सेट करता है, यहाँ लाल।

  • lwd आर्ग्युमेंट लाइन की चौड़ाई सेट करता है। 3 का मान लाइन को मोटा बनाता है ताकि वह स्पष्ट दिखे।

hist(home_data$price)

abline(v = mean(home_data$price), col='red', lwd = 3)

Probability densities प्लॉट करना

Histogram में probability density लाइन जोड़ने के लिए, पहले हम y-अक्ष को density पर स्केल करते हैं। hist() कॉल में, probability आर्ग्युमेंट को TRUE सेट करें।

Probability density लाइन density() और lines() के संयोजन से बनती है; density() density कर्व की स्थिति की गणना करता है, और lines() मौजूदा प्लॉट पर उस लाइन को जोड़ता है।

hist(home_data$price, probability = TRUE)
abline(v = mean(home_data$price), col='red', lwd = 3)
lines(density(home_data$price), col = 'green', lwd = 3)

base R में घर की कीमतों का histogram जिसमें औसत को हाइलाइट किया गया है
घर की कीमतों का histogram, औसत को हाइलाइट करते हुए। चित्र: लेखक द्वारा।

ध्यान दें कि y-अक्ष पर संख्याएँ बदल गई हैं।

रंग अनुकूलित करना

hist() का col पैरामीटर बार्स के fill color को सेट करता है, और border आउटलाइन का रंग। यहाँ मैं fill को नीला और बॉर्डर को सफेद सेट करूँगा।

hist(home_data$price, col = 'blue', border = "white")

रंग जोड़े गए base R histogram में घर की कीमतेंरंग के साथ घर की कीमतों का histogram। चित्र: लेखक द्वारा।

लेबल और शीर्षक जोड़ना

हम प्लॉट पर लेबल बदल सकते हैं ताकि वह अधिक पठनीय और प्रस्तुत करने योग्य बन जाए। यह तब उपयोगी है जब आप प्लॉट दूसरों के साथ साझा करते हैं।

  • xlab x-अक्ष का लेबल सेट करता है

  • ylab y-अक्ष का लेबल सेट करता है

  • main प्लॉट का शीर्षक सेट करता है

hist(home_data$price, xlab = 'Price (USD)', ylab = 'Number of Listings', main = 'Distribution of House Prices')

axis लेबल जोड़े गए base R histogramअक्ष लेबल के साथ घर की कीमतों का histogram। चित्र: लेखक द्वारा।

breaks का उपयोग करके binning

डिफॉल्ट आर्ग्युमेंट्स के साथ, कीमतों की पूरी रेंज में हाउसिंग कीमतों का वितरण देखना चुनौतीपूर्ण है। हम देख सकते हैं कि वे शुरुआती कुछ बिन्स में केंद्रित हैं, पर वे बहुत वर्णनात्मक नहीं हैं। 

हम breaks पैरामीटर का उपयोग करके और बिन्स जोड़ सकते हैं। इस आर्ग्युमेंट के साथ, हम उपयोग के लिए विशिष्ट breakpoints का एक वेक्टर, breakpoints की गणना करने का कोई फ़ंक्शन, जितने breaks चाहिए उनकी संख्या, या कोशिकाओं की संख्या की गणना करने का फ़ंक्शन पास कर सकते हैं। 

इस उदाहरण में, हम जितने बिन्स चाहिए उनकी संख्या पास करेंगे। यह संख्या उस संदर्भ पर निर्भर करती है जिसमें आप अपने ग्राफ में क्या दिखाना चाहते हैं।

hist(home_data$price, breaks = 100)

बिन चौड़ाई बदले गए base R histogramबिन चौड़ाई बदले गए घर की कीमतों का histogram। चित्र: लेखक द्वारा.

breaks को 100 पर सेट करने से, हमें शुरुआती कुछ बकेट्स में वितरण के बारे में काफी अधिक दृश्यता मिलती है। 

हम histogram में optimal breaks की गणना के लिए सामान्य गणनाओं के नाम भी breaks एट्रिब्यूट में पास कर सकते हैं। डिफॉल्ट रूप से, hist() “Sturges” विधि का उपयोग करता है। यहाँ हम विधि को स्पष्ट रूप से निर्दिष्ट करते हैं।

hist(home_data$price, breaks = "Sturges")

Sturges विधि का उपयोग करते हुए base R histogramSturges विधि का उपयोग करते हुए घर की कीमतों का histogram। चित्र: लेखक द्वारा.

हम Scott Method का उपयोग करने के लिए breaks एट्रिब्यूट में “Scott” भी पास कर सकते हैं। 

hist(home_data$price, breaks = "Scott")

Scott विधि का उपयोग करते हुए base R histogram
Scott विधि का उपयोग करते हुए घर की कीमतों का histogram। चित्र: लेखक द्वारा.

अंत में, हम Freedman-Diaconis (FD) विधि का भी उपयोग कर सकते हैं। 

hist(home_data$price, breaks = "Freedman-Diaconis")

Freedman-Diaconis विधि का उपयोग करते हुए base R histogramFreedman-Diaconis विधि का उपयोग करते हुए घर की कीमतों का histogram। चित्र: लेखक द्वारा.

break विधियों की तुलना

नीचे दी गई तालिका hist() में उपलब्ध तीन नामित break विधियों का सार प्रस्तुत करती है। डिफॉल्ट Sturges है।

विधियह कैसे काम करती हैकिसके लिए सर्वोत्तम
SturgesBins = 1 + log₂(n). लगभग सामान्य डेटा मानती है।छोटे से मध्यम डेटासेट जिनका वितरण लगभग सामान्य हो
ScottBin width = 3.49 × sd × n⁻¹ᐟ³. integrated mean squared error को न्यूनतम करता है।सामान्य वितरण वाला डेटा जहाँ variance मायने रखता है
Freedman-DiaconisBin width = 2 × IQR × n⁻¹ᐟ³. standard deviation के बजाय interquartile range का उपयोग करता है।तिरछा (skewed) डेटा या outliers वाले वितरण

अक्ष सीमाएँ सेट करना

हम xlim आर्ग्युमेंट का उपयोग करके अपने प्लॉट की x-अक्ष सीमाएँ सेट कर सकते हैं ताकि जिस डेटा में हमारी रुचि है उस पर ज़ूम किया जा सके। उदाहरण के लिए, कभी-कभी पूरे प्लॉट को देखने पर जो लंबी पूँछ दिखाई देती है, उसकी बजाय वितरण के केंद्रीय भाग पर ध्यान केंद्रित करना सहायक होता है। 

y-अक्ष सीमाएँ बदलना भी संभव है (ylim आर्ग्युमेंट का उपयोग करके), पर histogram के लिए यह कम उपयोगी है क्योंकि स्वचालित रूप से गणना किए गए मान लगभग हमेशा उपयुक्त होते हैं।

हम $0 से $2M के बीच की कीमतों पर ज़ूम करेंगे।

hist(home_data$price, breaks = 100, xlim = c(0, 2000000))

0 से 2 मिलियन डॉलर रेंज पर ज़ूम किया गया घर की कीमतों का base R histogramअक्ष सीमाएँ बदले गए घर की कीमतों का histogram। चित्र: लेखक द्वारा.

Histogram विज़ुअलाइज़ेशन में अगले कदम

जैसे-जैसे आप R में सहज होते जाएँ, आप समर्पित विज़ुअलाइज़ेशन पैकेज आज़मा सकते हैं जो सौंदर्य, लेआउट, और इंटरैक्टिविटी पर अधिक नियंत्रण देते हैं। R में plotting के लिए एक बहुत लोकप्रिय और आसान लाइब्रेरी है ggplot2। नीचे हम घर में बेडरूम की संख्या के आधार पर कीमतों के वितरण का एक रोचक दृश्य बनाते हैं।  


R में ggplot2 का उपयोग करते हुए बेडरूम संख्या के अनुसार faceted घर की कीमतों का histogramggplot2 का उपयोग करते हुए घर की कीमतों का histogram। चित्र: लेखक द्वारा।

ggplot2 R में सबसे व्यापक रूप से उपयोग किया जाने वाला विज़ुअलाइज़ेशन पैकेज है। आप हमारे How to Make a ggplot2 Histogram in R ट्यूटोरियल में इससे histogram बनाना सीख सकते हैं, या व्यापक परिचय के लिए Graphics with ggplot2 ट्यूटोरियल देखें। गहराई में जाने के लिए हमारे Introduction to ggplot2 course और Intermediate ggplot2 course देखें। 

अंतिम विचार

इस ट्यूटोरियल में, हमने सीखा कि सतत चरों के वितरण को देखने के लिए histogram उत्कृष्ट विज़ुअलाइज़ेशन हैं। हमने R में histogram बनाना, अपने histogram पर summary statistics प्लॉट करना, प्लॉट की विशेषताओं जैसे अक्ष शीर्षक, रंग, x-अक्ष की बिनिंग, और अक्षों पर सीमाएँ सेट करना सीखा। अंत में, हमने ggplot2 लाइब्रेरी की कुछ क्षमताएँ भी प्रदर्शित कीं।

अधिक DataCamp पठन और संसाधनों के लिए, हमारे इंटरैक्टिव कोर्स देखें: 

लेखक

Kevin Babitz

डेटा साइंस लेखक | Wayfair में सीनियर टेक्निकल मार्केटिंग एनालिस्ट | यूनिवर्सिटी ऑफ पेनसिल्वेनिया से डेटा साइंस में MSE

विषय