Histogram क्या है?
Histograms ऐसी visualizations हैं जो सतत (संख्यात्मक) वेरिएबल्स पर frequency distributions दिखाती हैं। ये हमें उस रेंज के भीतर डेटा अवलोकनों की गणना दिखाती हैं जिसे सतत वेरिएबल कवर करता है।
ggplot2 के साथ शुरुआत
इस ट्यूटोरियल का पालन करने के लिए, आपके पास R इंस्टॉल होना चाहिए और ये पैकेज होने चाहिए: ggplot2, readr, और dplyr। अगले सेक्शन का कोड इन्हें इंस्टॉल कर देगा यदि आपने पहले से नहीं किया है।
पैकेज इंस्टॉल करना
हम पहले library फ़ंक्शन का उपयोग करके ggplot2 लाइब्रेरी इम्पोर्ट करेंगे। इससे ggplot2 लाइब्रेरी के सभी built‑in फ़ंक्शंस उपलब्ध हो जाएंगे। यदि आपने ggplot2 इंस्टॉल नहीं किया है, तो आपको install.packages() कमांड चलाकर इसे इंस्टॉल करना होगा। हम यही readr लाइब्रेरी के लिए भी करेंगे, जो हमें CSV फ़ाइल पढ़ने देगी, और dplyr के लिए भी, जो पढ़े गए डेटा के साथ काम करना आसान बनाती है।
install.packages("ggplot2")
install.packages("readr")
install.packages("dplyr")
library(ggplot2)
library(readr)
library(dplyr)
डेटासेट लोड करना
इस ट्यूटोरियल के लिए, हम यह housing डेटासेट उपयोग करेंगे, जिसमें अलग-अलग हाउस लिस्टिंग्स के बारे में विवरण हैं—घर का आकार, कमरों की संख्या, कीमत, और लोकेशन जानकारी सहित।
हम read_csv() फ़ंक्शन का उपयोग करके डेटा पढ़ सकते हैं। हम इसे सीधे URL से पढ़ सकते हैं या CSV फ़ाइल को किसी डायरेक्टरी में डाउनलोड करके लोकल स्टोरेज से पढ़ सकते हैं। read_csv() का पहला आर्गुमेंट डेटा का लोकेशन है, और col_select आर्गुमेंट हमें वे कॉलम चुनने देता है जिनमें हमारी रुचि है।
home_data <- read_csv(
"https://raw.githubusercontent.com/rashida048/Datasets/master/home_data.csv",
col_select = c(price, condition)
)
इसके बाद हम head() फ़ंक्शन से डेटा की शुरुआती कुछ पंक्तियाँ देख सकते हैं:
head(home_data)

ggplot2 से Histogram कैसे बनाएं
अब हम histogram बना सकते हैं। ggplot2 में हम किसी भी प्रकार का ग्राफ बना रहे हों, हम हमेशा ggplot() फ़ंक्शन से शुरू करते हैं, जो plot elements जोड़ने के लिए एक कैनवस बनाता है। यह दो पैरामीटर्स लेता है।
-
पहला आर्गुमेंट एक data frame है। यहाँ हम
home_dataका उपयोग करना चाहते हैं। -
दूसरा आर्गुमेंट डेटा फ्रेम के कॉलम्स का plot aesthetics के साथ मैपिंग है। यह मैपिंग
aes()फ़ंक्शन को कॉल करना चाहिए। यहाँ हम price कॉलम को x‑axis पर मैप करते हैं।
अब तक, हमारा कोड यह है
ggplot(data = home_data, aes(x = price))
यह अपने आप में कुछ उपयोगी नहीं बनाएगा। इसे histogram बनाने के लिए, हम geom_histogram() का उपयोग करके histogram geometry जोड़ते हैं।
ggplot(data = home_data, aes(x = price)) +
geom_histogram()

geom_vline() का उपयोग कर histogram में वर्णनात्मक सांख्यिकी जोड़ें
हम geom_vline() फ़ंक्शन का उपयोग करके अपने प्लॉट में वर्णनात्मक सांख्यिकी जोड़ सकते हैं। यह प्लॉट में एक vertical line geometry जोड़ता है।
पहले, हम dplyr के summarize() का उपयोग करके एक वर्णनात्मक सांख्यिकी—यहाँ mean price—की गणना करते हैं।
price_stats <- home_data |>
summarize(mean_price = mean(price))
price_stats
# A tibble: 1 × 1
mean_price
<dbl>
1 540088.
यह फ़ंक्शन xintercept पैरामीटर लेता है, और वैकल्पिक color तथा linewidth एट्रिब्यूट्स से क्रमशः लाइनों का रंग और आकार अनुकूलित किया जा सकता है। हम पिछले सेक्शन की तरह प्लस साइन के साथ mean लाइन जोड़ेंगे।
ggplot(home_data, aes(x = price)) +
geom_histogram() +
geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2)
ध्यान दें कि geom_ फ़ंक्शंस में mapping और data आर्गुमेंट्स का क्रम ggplot() की तुलना में उल्टा होता है।

Counts की जगह Probability Densities प्लॉट करना
Histogram में probability density लाइन जोड़ने के लिए, पहले हम y‑axis को density पर scale करते हैं। aes() फ़ंक्शन में हम y को after_stat(density) पर सेट करते हैं।
फिर हम geom_density() फ़ंक्शन का उपयोग करके अपने ग्राफ में density लेयर जोड़ सकते हैं। यहाँ हमने color को हरा और linewidth को 2 सेट किया है।
ggplot(home_data, aes(x = price, y = after_stat(density))) +
geom_histogram() +
geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2) +
geom_density(color = "green", linewidth = 2)

ध्यान दें कि y‑axis पर संख्याएँ बदल गई हैं।
ध्यान दें कि हर लेयर एक ही पैटर्न का पालन करती है: एक + साइन, एक फ़ंक्शन कॉल, और वैकल्पिक आर्गुमेंट्स। आप geom_ फ़ंक्शंस, statistics, और themes को बिना हर संयोजन की सिंटैक्स फिर से सीखे जोड़ सकते हैं।
bins का उपयोग करके binning अपडेट करें
हम bin एट्रिब्यूट का उपयोग करके अपने ggplot2 histogram का binning अपडेट कर सकते हैं। हम bin एट्रिब्यूट को उन bins की संख्या के बराबर सेट करते हैं जिन्हें हम अपने ग्राफ पर दिखाना चाहते हैं। इससे हमें histogram में अधिक या कम सूक्ष्म स्तर का डेटा देखने में मदद मिलती है।
ggplot(data = home_data, aes(x = price)) +
geom_histogram(bins = 100)

हम geom_histogram() के binwidth एट्रिब्यूट का उपयोग करके bin का चौड़ाई भी मैन्युअली सेट कर सकते हैं।
ggplot(data = home_data, aes(x = price)) +
geom_histogram(binwidth = 50000)

अंत में, आप boundaries को center या boundary एट्रिब्यूट्स से align कर सकते हैं। यदि आप चाहते हैं कि bins की सीमाएँ किसी विशेष गुणक पर आएँ, तो आप इन एट्रिब्यूट्स का उपयोग कर सकते हैं (एक समय में केवल एक का उपयोग किया जा सकता है)। यह सुनिश्चित करने के लिए कि bins पूर्णांकों पर समाप्त हों, एट्रिब्यूट को 1 पर सेट करें।
ggplot(data = home_data, aes(x = price)) +
geom_histogram(boundary = 1)

Histogram का रंग अनुकूलित करें
इस सेक्शन में, हम histogram के रंग बदलेंगे। हम geom_histogram() के color एट्रिब्यूट से हर बार की आउटलाइन का रंग, और fill एट्रिब्यूट से बार्स का भराव रंग बदल सकते हैं। हम बार्स को नीले रंग से भरेंगे और आउटलाइन का रंग सफेद करेंगे।
ggplot(data = home_data, aes(x = price)) +
geom_histogram(color = "white", fill = "blue")

समूहों के आधार पर ggplot2 histogram का रंग अनुकूलित करें
आप histogram बार्स के रंगों को अनुकूलित कर सकते हैं।
aes() फ़ंक्शन के अंदर fill aesthetic बदलने से डेटासेट के किसी वेरिएबल के मान के आधार पर बार्स का आंतरिक रंग बदल जाएगा। वह वेरिएबल integers के बजाय श्रेणीबद्ध (factor) होना चाहिए, इसलिए हम उसे factor() फ़ंक्शन से बदल सकते हैं। इस उदाहरण में, हम condition वेरिएबल देखेंगे, जिसका मान 1 (खराब स्थिति) से 5 (बेहतरीन स्थिति) तक होता है।
home_data <- home_data |>
mutate(condition = factor(condition))
ggplot(data = home_data, aes(x = price, fill = condition)) +
geom_histogram()

labs() का उपयोग करके लेबल और शीर्षक जोड़ें
अगले चरण में, हम labs() फ़ंक्शन का उपयोग करके अपने ग्राफ में शीर्षक और लेबल जोड़ते हैं। हम x, y, और title एट्रिब्यूट्स को अपने इच्छित लेबल्स पर सेट करते हैं।
ggplot(data = home_data, aes(x = price)) +
geom_histogram() +
labs(x ='Price (USD)', y='Number of Listings', title = 'Housing Price Distributions')

xlim() का उपयोग कर x‑axis सीमाएँ सेट करना
हम xlim() फ़ंक्शन का उपयोग करके अपने प्लॉट की x‑axis सीमाएँ सेट कर सकते हैं ताकि उस डेटा पर ज़ूम किया जा सके जिसमें हमारी रुचि है। उदाहरण के लिए, पूरे प्लॉट को देखने पर जो लंबी पूँछ दिखती है, उसके बजाय कभी‑कभी वितरण के केंद्रीय हिस्से पर ध्यान केंद्रित करना उपयोगी होता है।
y‑axis सीमाएँ बदलना भी संभव है ( ylim() का उपयोग करके), लेकिन histograms के लिए यह कम उपयोगी है क्योंकि ऑटोमैटिकली कैलकुलेटेड मान लगभग हमेशा आदर्श होते हैं।
हम $0 और $2M के बीच की कीमतों पर ज़ूम करेंगे।
ggplot(home_data, aes(x = price)) +
geom_histogram(bins = 100) +
xlim(0, 2000000)

Legend की स्थिति बदलें
यदि हम अपने ग्राफ पर legend को स्थानांतरित करना चाहते हैं, उदाहरण के लिए जब हम condition को अलग‑अलग रंगों में दर्शाते हैं, तो हम theme() फ़ंक्शन और legend.position एट्रिब्यूट का उपयोग कर सकते हैं। legend.position के मान “bottom”, “top”, “left”, या “right” हो सकते हैं। आप c(x, y) का उपयोग करके legend के लिए निर्देशांक भी पास कर सकते हैं।
ggplot(home_data, aes(x = price, fill = condition)) +
geom_histogram() +
theme(legend.position = "bottom")
ggplot2 में facets का उपयोग
अंत में, हम अलग‑अलग समूहों में डेटा को अलग‑अलग ग्राफ्स में facets के जरिए विज़ुअलाइज़ कर सकते हैं। इससे प्रत्येक श्रेणी के लिए visualization कई subplots में बँट जाता है। यह facet_grid() फ़ंक्शन से किया जा सकता है। नीचे हम अलग‑अलग condition मानों के अनुसार कीमतों के वितरणों को विज़ुअलाइज़ करेंगे।
ggplot(home_data, aes(x = price)) +
geom_histogram() + facet_grid(vars(condition))
Faceting का अधिक विस्तृत कवरेज R में ggplot के लिए Facets ट्यूटोरियल में है।

अंतिम विचार
ggplot2 में histogram बनाने के लिए, ggplot() से आधार तैयार करें, अपना data frame और aes() मैपिंग पास करें, फिर geom_histogram() जोड़ें। उसके बाद अनुकूलन की परतें जोड़ें: axis शीर्षकों के लिए labs(), x‑axis पर ज़ूम के लिए xlim(), और legend को पुन:स्थित करने या दृश्य शैली समायोजित करने के लिए theme()।
ggplot2 को विस्तार से Data Visualization in R स्किल ट्रैक में कवर किया गया है, जिसकी शुरुआत Introduction to Data Visualization with ggplot2 से होती है। आप Tidyverse Fundamentals with R स्किल ट्रैक में ggplot2 को अन्य tidyverse टूल्स के साथ संयोजित करना सीख सकते हैं।
Histograms से आगे के अधिक ggplot2 plot प्रकारों के लिए हमारा Graphics with ggplot2 ट्यूटोरियल देखें, और एक सुविधाजनक संदर्भ के लिए ggplot2 चीट शीट डाउनलोड करें।
डेटा साइंस लेखक | Wayfair में सीनियर टेक्निकल मार्केटिंग एनालिस्ट | यूनिवर्सिटी ऑफ पेनसिल्वेनिया से डेटा साइंस में MSE
Histograms किसी डेटा सेट के वितरण का स्वरूप एक नज़र में दिखा देते हैं। इस ट्यूटोरियल में, मैं आपको ggplot2—R की सबसे अधिक इस्तेमाल होने वाली plotting लाइब्रेरी और tidyverse इकोसिस्टम का मुख्य हिस्सा—का उपयोग करके histograms बनाना और उन्हें अनुकूलित करना सिखाऊंगा। ggplot2 graphics की grammar का पालन करता है, जो आपको plot elements की परतें जोड़कर जटिल visualizations बनाने देता है। base R वाले दृष्टिकोण के लिए, हमारा base R के साथ histogram ट्यूटोरियल देखें।
संक्षेप में
Histogram बनाने के लिए
ggplot()कॉल के अंदरgeom_histogram()का उपयोग करेंgeom_histogram()के अंदरbinsसे bin की संख्या याbinwidthसे bin का आकार नियंत्रित करेंबार रंगों को
color(आउटलाइन) औरfill(भीतर) argument से अनुकूलित करेंy = after_stat(density)सेट करने के बादgeom_density()से density कर्व overlay करेंaes()मेंfill = variableया अलग पैनल्स के लिएfacet_grid()से श्रेणी के अनुसार विभाजित करें