इस ट्यूटोरियल में, मैं आपको 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() फ़ंक्शन का उपयोग करके डेटा की शुरुआती कुछ पंक्तियाँ देखें।
घर की कीमतों का मूलभूत 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)संचालित द्वारा
घर की कीमतों का histogram, औसत को हाइलाइट करते हुए। चित्र: लेखक द्वारा।
ध्यान दें कि y-अक्ष पर संख्याएँ बदल गई हैं।
रंग अनुकूलित करना
hist() का col पैरामीटर बार्स के fill color को सेट करता है, और border आउटलाइन का रंग। यहाँ मैं fill को नीला और बॉर्डर को सफेद सेट करूँगा।
hist(home_data$price, col ='blue', border ="white")संचालित द्वारा
रंग के साथ घर की कीमतों का histogram। चित्र: लेखक द्वारा।
लेबल और शीर्षक जोड़ना
हम प्लॉट पर लेबल बदल सकते हैं ताकि वह अधिक पठनीय और प्रस्तुत करने योग्य बन जाए। यह तब उपयोगी है जब आप प्लॉट दूसरों के साथ साझा करते हैं।
xlab x-अक्ष का लेबल सेट करता है
ylab y-अक्ष का लेबल सेट करता है
main प्लॉट का शीर्षक सेट करता है
hist(home_data$price, xlab ='Price (USD)', ylab ='Number of Listings', main ='Distribution of House Prices')संचालित द्वारा
अक्ष लेबल के साथ घर की कीमतों का histogram। चित्र: लेखक द्वारा।
breaks का उपयोग करके binning
डिफॉल्ट आर्ग्युमेंट्स के साथ, कीमतों की पूरी रेंज में हाउसिंग कीमतों का वितरण देखना चुनौतीपूर्ण है। हम देख सकते हैं कि वे शुरुआती कुछ बिन्स में केंद्रित हैं, पर वे बहुत वर्णनात्मक नहीं हैं।
हम breaks पैरामीटर का उपयोग करके और बिन्स जोड़ सकते हैं। इस आर्ग्युमेंट के साथ, हम उपयोग के लिए विशिष्ट breakpoints का एक वेक्टर, breakpoints की गणना करने का कोई फ़ंक्शन, जितने breaks चाहिए उनकी संख्या, या कोशिकाओं की संख्या की गणना करने का फ़ंक्शन पास कर सकते हैं।
इस उदाहरण में, हम जितने बिन्स चाहिए उनकी संख्या पास करेंगे। यह संख्या उस संदर्भ पर निर्भर करती है जिसमें आप अपने ग्राफ में क्या दिखाना चाहते हैं।
बिन चौड़ाई बदले गए घर की कीमतों का histogram। चित्र: लेखक द्वारा.
breaks को 100 पर सेट करने से, हमें शुरुआती कुछ बकेट्स में वितरण के बारे में काफी अधिक दृश्यता मिलती है।
हम histogram में optimal breaks की गणना के लिए सामान्य गणनाओं के नाम भी breaks एट्रिब्यूट में पास कर सकते हैं। डिफॉल्ट रूप से, hist()“Sturges” विधि का उपयोग करता है। यहाँ हम विधि को स्पष्ट रूप से निर्दिष्ट करते हैं।
Scott विधि का उपयोग करते हुए घर की कीमतों का histogram। चित्र: लेखक द्वारा.
अंत में, हम Freedman-Diaconis (FD) विधि का भी उपयोग कर सकते हैं।
hist(home_data$price, breaks ="Freedman-Diaconis")संचालित द्वारा
Freedman-Diaconis विधि का उपयोग करते हुए घर की कीमतों का histogram। चित्र: लेखक द्वारा.
break विधियों की तुलना
नीचे दी गई तालिका hist() में उपलब्ध तीन नामित break विधियों का सार प्रस्तुत करती है। डिफॉल्ट Sturges है।
विधि
यह कैसे काम करती है
किसके लिए सर्वोत्तम
Sturges
Bins = 1 + log₂(n). लगभग सामान्य डेटा मानती है।
छोटे से मध्यम डेटासेट जिनका वितरण लगभग सामान्य हो
Scott
Bin width = 3.49 × sd × n⁻¹ᐟ³. integrated mean squared error को न्यूनतम करता है।
सामान्य वितरण वाला डेटा जहाँ variance मायने रखता है
Freedman-Diaconis
Bin 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))संचालित द्वारा
अक्ष सीमाएँ बदले गए घर की कीमतों का histogram। चित्र: लेखक द्वारा.
Histogram विज़ुअलाइज़ेशन में अगले कदम
जैसे-जैसे आप R में सहज होते जाएँ, आप समर्पित विज़ुअलाइज़ेशन पैकेज आज़मा सकते हैं जो सौंदर्य, लेआउट, और इंटरैक्टिविटी पर अधिक नियंत्रण देते हैं। R में plotting के लिए एक बहुत लोकप्रिय और आसान लाइब्रेरी है ggplot2। नीचे हम घर में बेडरूम की संख्या के आधार पर कीमतों के वितरण का एक रोचक दृश्य बनाते हैं।
ggplot2 का उपयोग करते हुए घर की कीमतों का histogram। चित्र: लेखक द्वारा।
इस ट्यूटोरियल में, हमने सीखा कि सतत चरों के वितरण को देखने के लिए histogram उत्कृष्ट विज़ुअलाइज़ेशन हैं। हमने R में histogram बनाना, अपने histogram पर summary statistics प्लॉट करना, प्लॉट की विशेषताओं जैसे अक्ष शीर्षक, रंग, x-अक्ष की बिनिंग, और अक्षों पर सीमाएँ सेट करना सीखा। अंत में, हमने ggplot2 लाइब्रेरी की कुछ क्षमताएँ भी प्रदर्शित कीं।
अधिक DataCamp पठन और संसाधनों के लिए, हमारे इंटरैक्टिव कोर्स देखें:
इस ट्यूटोरियल में, मैं आपको 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।आइए
head()फ़ंक्शन का उपयोग करके डेटा की शुरुआती कुछ पंक्तियाँ देखें।Base R के साथ Histograms बनाना
अगले चरण में, हम अपने डेटासेट में कीमतों के वितरण को देखने के लिए
hist()फ़ंक्शन का उपयोग करके एक histogram बनाएँगे।घर की कीमतों का मूलभूत histogram। चित्र: लेखक द्वारा।
वर्णनात्मक आँकड़े जोड़ना
हम
abline()फ़ंक्शन का उपयोग करके histogram में वर्णनात्मक आँकड़े जोड़ सकते हैं। यह प्लॉट में एक वर्टिकल लाइन जोड़ता है।vआर्ग्युमेंट को x-अक्ष पर उस स्थान पर सेट करें जहाँ वर्टिकल लाइन चाहिए। यहाँ, हमmean()से औसत घर की कीमत प्राप्त कर रहे हैं।colआर्ग्युमेंट लाइन का रंग सेट करता है, यहाँ लाल।lwdआर्ग्युमेंट लाइन की चौड़ाई सेट करता है। 3 का मान लाइन को मोटा बनाता है ताकि वह स्पष्ट दिखे।Probability densities प्लॉट करना
Histogram में probability density लाइन जोड़ने के लिए, पहले हम y-अक्ष को density पर स्केल करते हैं।
hist()कॉल में,probabilityआर्ग्युमेंट कोTRUEसेट करें।Probability density लाइन
density()औरlines()के संयोजन से बनती है;density()density कर्व की स्थिति की गणना करता है, औरlines()मौजूदा प्लॉट पर उस लाइन को जोड़ता है।घर की कीमतों का histogram, औसत को हाइलाइट करते हुए। चित्र: लेखक द्वारा।
ध्यान दें कि y-अक्ष पर संख्याएँ बदल गई हैं।
रंग अनुकूलित करना
hist()काcolपैरामीटर बार्स के fill color को सेट करता है, औरborderआउटलाइन का रंग। यहाँ मैं fill को नीला और बॉर्डर को सफेद सेट करूँगा।लेबल और शीर्षक जोड़ना
हम प्लॉट पर लेबल बदल सकते हैं ताकि वह अधिक पठनीय और प्रस्तुत करने योग्य बन जाए। यह तब उपयोगी है जब आप प्लॉट दूसरों के साथ साझा करते हैं।
xlabx-अक्ष का लेबल सेट करता हैylaby-अक्ष का लेबल सेट करता हैmainप्लॉट का शीर्षक सेट करता हैbreaks का उपयोग करके binning
डिफॉल्ट आर्ग्युमेंट्स के साथ, कीमतों की पूरी रेंज में हाउसिंग कीमतों का वितरण देखना चुनौतीपूर्ण है। हम देख सकते हैं कि वे शुरुआती कुछ बिन्स में केंद्रित हैं, पर वे बहुत वर्णनात्मक नहीं हैं।
हम
breaksपैरामीटर का उपयोग करके और बिन्स जोड़ सकते हैं। इस आर्ग्युमेंट के साथ, हम उपयोग के लिए विशिष्ट breakpoints का एक वेक्टर, breakpoints की गणना करने का कोई फ़ंक्शन, जितने breaks चाहिए उनकी संख्या, या कोशिकाओं की संख्या की गणना करने का फ़ंक्शन पास कर सकते हैं।इस उदाहरण में, हम जितने बिन्स चाहिए उनकी संख्या पास करेंगे। यह संख्या उस संदर्भ पर निर्भर करती है जिसमें आप अपने ग्राफ में क्या दिखाना चाहते हैं।
breaksको 100 पर सेट करने से, हमें शुरुआती कुछ बकेट्स में वितरण के बारे में काफी अधिक दृश्यता मिलती है।हम histogram में optimal breaks की गणना के लिए सामान्य गणनाओं के नाम भी
breaksएट्रिब्यूट में पास कर सकते हैं। डिफॉल्ट रूप से,hist()“Sturges”विधि का उपयोग करता है। यहाँ हम विधि को स्पष्ट रूप से निर्दिष्ट करते हैं।हम Scott Method का उपयोग करने के लिए
breaksएट्रिब्यूट में“Scott”भी पास कर सकते हैं।Scott विधि का उपयोग करते हुए घर की कीमतों का histogram। चित्र: लेखक द्वारा.
अंत में, हम Freedman-Diaconis (FD) विधि का भी उपयोग कर सकते हैं।
break विधियों की तुलना
नीचे दी गई तालिका
hist()में उपलब्ध तीन नामित break विधियों का सार प्रस्तुत करती है। डिफॉल्ट Sturges है।अक्ष सीमाएँ सेट करना
हम
xlimआर्ग्युमेंट का उपयोग करके अपने प्लॉट की x-अक्ष सीमाएँ सेट कर सकते हैं ताकि जिस डेटा में हमारी रुचि है उस पर ज़ूम किया जा सके। उदाहरण के लिए, कभी-कभी पूरे प्लॉट को देखने पर जो लंबी पूँछ दिखाई देती है, उसकी बजाय वितरण के केंद्रीय भाग पर ध्यान केंद्रित करना सहायक होता है।y-अक्ष सीमाएँ बदलना भी संभव है (
ylimआर्ग्युमेंट का उपयोग करके), पर histogram के लिए यह कम उपयोगी है क्योंकि स्वचालित रूप से गणना किए गए मान लगभग हमेशा उपयुक्त होते हैं।हम $0 से $2M के बीच की कीमतों पर ज़ूम करेंगे।
Histogram विज़ुअलाइज़ेशन में अगले कदम
जैसे-जैसे आप R में सहज होते जाएँ, आप समर्पित विज़ुअलाइज़ेशन पैकेज आज़मा सकते हैं जो सौंदर्य, लेआउट, और इंटरैक्टिविटी पर अधिक नियंत्रण देते हैं। R में plotting के लिए एक बहुत लोकप्रिय और आसान लाइब्रेरी है ggplot2। नीचे हम घर में बेडरूम की संख्या के आधार पर कीमतों के वितरण का एक रोचक दृश्य बनाते हैं।
ggplot2R में सबसे व्यापक रूप से उपयोग किया जाने वाला विज़ुअलाइज़ेशन पैकेज है। आप हमारे 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 पठन और संसाधनों के लिए, हमारे इंटरैक्टिव कोर्स देखें: