R में boxplot(): कैसे बनाएं BoxRStudio में प्लॉट
⚡ स्मार्ट सारांश
BoxR में plot फ़ंक्शन ggplot2 के geom_boxplot() फ़ंक्शन का उपयोग करके किसी संख्यात्मक वितरण को उसके माध्यिका, चतुर्थक, व्हिस्कर और आउटलायर्स के माध्यम से सारांशित करता है। यह चरण-दर-चरण प्रक्रिया वायु गुणवत्ता डेटासेट पर एक बॉक्स प्लॉट बनाने और उस पर रंग, बिंदु, जिटर, नॉच और समूह तुलनाओं को परत दर परत लागू करने का तरीका बताती है।
आर में बॉक्सप्लॉट()
आर में बॉक्सप्लॉट() क्वार्टाइल द्वारा डेटा के वितरण को देखने और आउटलायर्स की उपस्थिति का पता लगाने में मदद करता है। आप R में boxplot() बनाने के लिए ggplot2 लाइब्रेरी से ज्यामितीय ऑब्जेक्ट geom_boxplot() का उपयोग कर सकते हैं।
हम R में boxplot() फ़ंक्शन को ggplot फ़ंक्शन के साथ पेश करने के लिए airquality डेटासेट का उपयोग करेंगे। इस डेटासेट में मई से सितंबर 1973 तक न्यूयॉर्क में दैनिक वायु गुणवत्ता माप दर्ज हैं और इसमें 153 अवलोकन शामिल हैं। हम निम्नलिखित चरों का उपयोग करेंगे:
- ओजोन: संख्यात्मक चर
- पवन: संख्यात्मक चर
- महीना: मई से सितंबर. संख्यात्मक चर
इसे बनाने से पहले, यह जानना जरूरी है कि बॉक्स का प्रत्येक भाग वास्तव में क्या दर्शाता है।
कैसे पढ़ें Box प्लॉट: चतुर्थक, आईक्यूआर और आउटलायर्स
बॉक्स प्लॉट का प्रत्येक तत्व पांच-संख्या सारांश से एक संख्या को एन्कोड करता है। यह जानना कि कौन सा तत्व क्या दर्शाता है, चार्ट को केवल सजावट से विश्लेषण में बदल देता है।
- निचला कब्ज़ा: पहला चतुर्थक, Q1। पच्चीस प्रतिशत अवलोकन इसके नीचे स्थित हैं।
- मध्य रेखा: दूसरा चतुर्थक। बॉक्स के अंदर इसकी स्थिति विषमता को दर्शाती है: नीचे की ओर धकेली गई रेखा का अर्थ है कि डेटा दाईं ओर विषम है।
- ऊपरी कब्ज़ा: तीसरा चतुर्थक, Q3। 75 प्रतिशत अवलोकन इसके नीचे स्थित हैं।
- Box ऊंचाई: अंतरचतुर्थक सीमा, आईक्यूआर = क्यू3 - क्यू1, जिसमें डेटा का मध्य भाग होता है और यह प्रसार का मानक मजबूत माप है।
- मूंछें: वे निकटतम हिंज के आईक्यूआर के 1.5 गुना के भीतर सबसे चरम अवलोकन तक विस्तारित होते हैं। वे न्यूनतम और अधिकतम नहीं हैं।
- मूंछों से परे के बिंदु: 1.5 आईक्यूआर नियम द्वारा आउटलायर्स के रूप में चिह्नित अवलोकन।
दो सावधानियां। पहली, यहां "आउटलायर" एक सांख्यिकीय संकेत है, त्रुटि नहीं: ओजोन सांद्रता जैसे विषम वितरण में, उच्च मान अपेक्षित होते हैं और उन्हें हटाया नहीं जाना चाहिए। दूसरी, बॉक्स प्लॉट वितरण के आकार को छिपा देता है, इसलिए समान बॉक्स वाले दो समूहों में अंतर्निहित डेटा बहुत भिन्न हो सकता है। नीचे दिखाए गए अनुसार जिटर्ड पॉइंट्स जोड़ने से इससे बचाव होता है।
Box R में प्लॉट बनाम हिस्टोग्राम बनाम वायलिन प्लॉट
ये तीनों चार्ट एक संख्यात्मक वितरण का वर्णन करते हैं, लेकिन प्रत्येक चार्ट कुछ ऐसा प्रकट करता है जिसे अन्य चार्ट छिपाते हैं।
| मापदंड | Box भूखंड | हिस्टोग्राम | वायलिन प्लॉट |
|---|---|---|---|
| दिखाता है | माध्यिका, चतुर्थक, आउटलायर्स | प्रत्येक बिन में आवृत्ति | पूर्ण घनत्व वक्र |
| Revकई चोटियाँ | नहीं | हाँ | हाँ |
| झंडे असामान्य हैं | हाँ, स्पष्ट रूप से | केवल दृष्टिगत रूप से | प्रत्यक्ष नहीं |
| कई समूहों की तुलना करना | उत्कृष्ट | अजीब | अच्छा |
| ट्यूनिंग विकल्प की आवश्यकता है | नहीं | हां, कूड़ेदान की गिनती | हाँ, बैंडविड्थ |
| ggplot2 ऑब्जेक्ट | जियोम_बॉक्सप्लॉट() | जियोम_हिस्टोग्राम() | जियोम_वायलिन() |
एक सामान्य समझौता यह है कि एक वायलिन प्लॉट बनाया जाए जिसके अंदर एक संकीर्ण बॉक्स प्लॉट हो, जिससे घनत्व का आकार और चतुर्थक सारांश एक ही चार्ट में बना रहे। देखें हिस्टोग्राम ट्यूटोरियल तुलना के बिनिंग पक्ष के लिए।
बनाएं Box भूखंड
इससे पहले कि आप R में अपना पहला boxplot() बनाना शुरू करें, आपको डेटा को निम्नानुसार हेरफेर करना होगा:
- चरण 1: डेटा आयात करें
- चरण 2: अनावश्यक चर हटाएँ
- चरण 3: महीने को क्रमित गुणनखंड में परिवर्तित करें
- चरण 4: प्रत्येक माह को तीन भागों में विभाजित करते हुए एक नया श्रेणीबद्ध चर बनाएं: प्रारंभ, मध्य और अंत।
- चरण 5: लुप्त अवलोकनों को हटाएं
ये सभी चरण dplyr और पाइपलाइन ऑपरेटर %>% के साथ किए जाते हैं।
library(dplyr) library(ggplot2) # Step 1 data_air <- airquality %>% #Step 2 select(-c(Solar.R, Temp)) %>% #Step 3 mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), #Step 4 day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))
एक अच्छा अभ्यास यह है कि डेटा की संरचना को फंक्शन झलक() के साथ जांचा जाए।
glimpse(data_air)
आउटपुट:
## Observations: 153 ## Variables: 5 ## $ Ozone <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ... ## $ Wind <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6... ## $ Month <ord> May, May, May, May, May, May, May, May, May, May, May,... ## $ Day <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,... ## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...
Ozone और Solar.R दोनों में NA मान मौजूद हैं। चूंकि geom_boxplot() इन्हें चुपचाप हटा देगा और एक चेतावनी प्रिंट करेगा, इसलिए इन्हें स्पष्ट रूप से हटाना अधिक सुविधाजनक है।
# Step 5
data_air_nona <-data_air %>% na.omit()
बेसिक बॉक्स प्लॉट
अब महीने के अनुसार ओजोन के वितरण का ग्राफ बनाएं।
# Store the graph box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone)) # Add the geometric object box plot box_plot + geom_boxplot()
Code व्याख्या
- आगे उपयोग के लिए ग्राफ को संग्रहीत करें
- box_plot: बेस प्लॉट box_plot ऑब्जेक्ट में स्टोर होता है, जिससे आप पूरे कॉल को दोहराए बिना बाद में लेयर्स जोड़ सकते हैं।
- ज्यामितीय वस्तु जोड़ें
- आप डेटासेट data_air_nona को ggplot बॉक्सप्लॉट में पास करते हैं।
- Aes() तर्क के अंदर, आप x-अक्ष और y-अक्ष जोड़ते हैं।
- + चिह्न का मतलब है कि आप चाहते हैं कि R कोड को पढ़ता रहे। यह कोड को तोड़कर उसे अधिक पठनीय बनाता है।
- बॉक्स प्लॉट बनाने के लिए geom_boxplot() का उपयोग करें
आउटपुट:
ग्राफ़ का पक्ष बदलें
आप ग्राफ के किनारे को पलट सकते हैं।
box_plot +
geom_boxplot()+
coord_flip()
Code व्याख्या
- box_plot: आप अपने द्वारा संग्रहीत ग्राफ़ का उपयोग करते हैं। यह हर बार जब आप ग्राफ़ में नई जानकारी जोड़ते हैं तो सभी कोड को फिर से लिखने से बचाता है।
- geom_boxplot(): बॉक्स और व्हिस्कर बनाएं
- coord_flip(): ग्राफ के किनारे को पलटें
आउटपुट:
आउटलाइअर का रंग बदलें
आप आउटलायर्स का रंग, आकार और आकृति बदल सकते हैं।
box_plot +
geom_boxplot(outlier.colour = "red",
outlier.shape = 2,
outlier.size = 3) +
theme_classic()
Code व्याख्या
- outlier.colour=”red”: आउटलायर्स का रंग नियंत्रित करें
- outlier.shape=2: आउटलायर का आकार बदलें। 2 त्रिभुज को संदर्भित करता है
- outlier.size=3: त्रिभुज का आकार बदलें। बड़ी संख्याएँ बड़े मार्कर बनाती हैं।
आउटपुट:
सारांश सांख्यिकी जोड़ें
आप समूह माध्य जैसे सारांश सांख्यिकी को ओवरले कर सकते हैं, जिसे बॉक्स प्लॉट स्वयं नहीं दिखाता है।
box_plot +
geom_boxplot() +
stat_summary(fun.y = mean,
geom = "point",
size = 3,
color = "steelblue") +
theme_classic()
Code व्याख्या
- stat_summary() बॉक्स प्लॉट के ऊपर एक परिकलित सांख्यिकी जोड़ता है।
- fun आर्गुमेंट यह नियंत्रित करता है कि कौन सा सांख्यिकी मान लौटाया जाएगा। यहाँ यह माध्य है। ध्यान दें कि पुराने कोड में fun.y का उपयोग किया जाता था, जिसे ggplot2 ने संस्करण 3.3.0 में अप्रचलित कर दिया है।
- नोट: अन्य आँकड़े भी उपलब्ध हैं जैसे कि न्यूनतम और अधिकतम। एक ही ग्राफ़ में एक से अधिक आँकड़े प्रदर्शित किए जा सकते हैं
- geom = “बिंदु”: एक बिंदु के साथ औसत प्लॉट करें
- आकार=3: बिंदु का आकार
- रंग = "स्टीलब्लू": बिंदुओं का रंग
आउटपुट:
Box बिन्दुओं के साथ प्लॉट
इसके बाद, बॉक्स के ऊपर एक डॉट प्लॉट लेयर जोड़ें। प्रत्येक डॉट एक अवलोकन को दर्शाता है, जिससे प्रत्येक बॉक्स के पीछे नमूना आकार दिखाई देता है।
box_plot +
geom_boxplot() +
geom_dotplot(binaxis = 'y',
dotsize = 1,
stackdir = 'center') +
theme_classic()
Code व्याख्या
- geom_dotplot() प्रत्येक अवलोकन के लिए एक बिंदु बनाता है, जो प्रत्येक बिन के भीतर स्टैक किए जाते हैं।
- binaxis='y': y-अक्ष के साथ बिंदुओं की स्थिति बदलें। डिफ़ॉल्ट रूप से, x-अक्ष
- dotsize=1: बिंदुओं का आकार
- stackdir='center': बिंदुओं को एक साथ रखने का तरीका: चार मान:
- “ऊपर” (डिफ़ॉल्ट),
- "नीचे"
- "केंद्र"
- “सेंटरहोल”
आउटपुट:
सौंदर्यबोध को नियंत्रित करें Box भूखंड
बॉक्स का रंग बदलें
आप समूह का रंग बदल सकते हैं.
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
Code व्याख्या
- समूहों के रंगों को aes() मैप में नियंत्रित किया जाता है।pingआप महीने के अनुसार बॉक्स और व्हिस्कर प्लॉट का रंग बदलने के लिए color= Month का उपयोग कर सकते हैं।
आउटपुट:
Box कई समूहों के साथ साजिश
कई समूहों को जोड़ना भी संभव है। आप माप के दिन के अनुसार वायु गुणवत्ता में अंतर देख सकते हैं।
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
Code व्याख्या
- aes() मैपping ज्यामितीय वस्तु का यह भाग प्रदर्शित किए जाने वाले समूहों को नियंत्रित करता है (यह चर एक गुणनखंड होना चाहिए)
- aes(fill= day_cat) x-अक्ष में प्रत्येक माह के लिए तीन बॉक्स बनाने की अनुमति देता है
आउटपुट:
Box घबराये हुए बिंदुओं के साथ प्लॉट
अलग-अलग प्रेक्षणों को दर्शाने का एक और तरीका जिटर पॉइंट्स का उपयोग करना है। जिटरिंग आमतौर पर तब चुना जाता है जब श्रेणीबद्ध x-अक्ष के कारण कई बिंदु एक ही स्थिति पर आ जाते हैं।
यह विधि ओवरलैप से बचाती हैping असतत डेटा का।
box_plot +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(width = 0.21)) +
theme_classic()
Code व्याख्या
- geom_jitter() प्रत्येक बिंदु पर एक छोटा यादृच्छिक विस्थापन जोड़ता है ताकि ओवरलैप हो सके।ping मूल्य स्पष्ट हो जाते हैं।
- आकृति=15 बिंदुओं का आकार बदलता है। 15 वर्गों को दर्शाता है
- रंग = “स्टीलब्लू”: बिंदु का रंग बदलें
- position = position_jitter(width = 0.21): यह नियंत्रित करता है कि बिंदुओं को x-अक्ष इकाइयों में मापी गई पार्श्व दिशा में कितनी दूर तक विस्थापित किया जाता है। डिफ़ॉल्ट मान श्रेणियों के बीच की दूरी का 40 प्रतिशत है।
आउटपुट:
आप जिटर विधि से प्राप्त पहले ग्राफ और बिंदु विधि से प्राप्त दूसरे ग्राफ के बीच अंतर देख सकते हैं।
box_plot +
geom_boxplot() +
geom_point(shape = 5,
color = "steelblue") +
theme_classic()
नोकदार Box भूखंड
geom_boxplot() की एक दिलचस्प विशेषता, R में एक नोचेड बॉक्सप्लॉट फ़ंक्शन है। नोच प्लॉट मीडियन के चारों ओर बॉक्स को संकीर्ण करता है। नोचेड बॉक्स प्लॉट का मुख्य उद्देश्य समूहों के बीच मीडियन के महत्व की तुलना करना है। इस बात के पुख्ता सबूत हैं कि जब नोच ओवरलैप नहीं होते हैं तो दो समूहों के मीडियन अलग-अलग होते हैं। नोच की गणना इस प्रकार की जाती है:
यहां IQR अंतरचतुर्थक परास है और n समूह में प्रेक्षणों की संख्या है। यह रेखा माध्यिका के लगभग 95 प्रतिशत विश्वास अंतराल को कवर करती है।
box_plot +
geom_boxplot(notch = TRUE) +
theme_classic()
Code व्याख्या
- geom_boxplot(notch = TRUE): माध्यिका के चारों ओर खांचे बनाकर बॉक्स प्लॉट बनाएं
आउटपुट:
किसी फ़ाइल में शीर्षक, लेबल और कस्टम रंग कैसे जोड़ें Box R में प्लॉट करें
ऊपर दिए गए ग्राफ़ में ggplot2 के डिफ़ॉल्ट सेटिंग्स का उपयोग किया गया है, जो डेटा फ़्रेम से सीधे वेरिएबल नाम लेते हैं। प्रकाशन योग्य चार्ट के लिए पठनीय लेबल और सोच-समझकर चुने गए रंगों का चयन आवश्यक है।
शीर्षक और अक्ष लेबल। एक labs() कॉल प्रत्येक टेक्स्ट एलिमेंट को सेट करता है:
box_plot +
geom_boxplot(fill = "coral", alpha = 0.7) +
labs(title = "Ozone concentration by month",
subtitle = "New York, May to September 1973",
x = "Month",
y = "Ozone (parts per billion)",
caption = "Source: airquality dataset") +
theme_classic()
अपने मनपसंद रंग चुनें। जब fill को aes() के अंदर मैप किया जाता है तो scale_fill_manual() का उपयोग करें, और जब colour को मैप किया जाता है तो scale_colour_manual() का उपयोग करें:
ggplot(data_air_nona, aes(x = Month, y = Ozone, fill = Month)) + geom_boxplot() + scale_fill_manual(values = c("#0e9cd1", "coral", "#7dc27d", "#c9a227", "grey60")) + theme_classic() + theme(legend.position = "none")
यहां लेजेंड को बंद कर दिया गया है क्योंकि x-अक्ष पर पहले से ही प्रत्येक महीने का नाम दिया गया है, इसलिए इसे दोहराने से जगह की बर्बादी होगी।
बक्सों को पुनः व्यवस्थित करना। कारक स्तर अक्ष पर क्रम निर्धारित करते हैं। चूंकि महीने को एक क्रमबद्ध कारक के रूप में बनाया गया था, इसलिए यह पहले से ही कालानुक्रमिक रूप से व्यवस्थित है। एक अव्यवस्थित कारक के लिए, इसके बजाय माध्यिका के अनुसार क्रमबद्ध करें:
ggplot(data_air_nona, aes(x = reorder(Month, Ozone, FUN = median), y = Ozone)) + geom_boxplot() + theme_classic()
चार्ट को सहेजा जा रहा है। ggsave() फ़ंक्शन आपके द्वारा नियंत्रित रिज़ॉल्यूशन पर अंतिम प्लॉट को डिस्क पर लिखता है:
ggsave("ozone_boxplot.png", width = 8, height = 5, dpi = 300)
Box R में प्लॉट करें: Code संदर्भ
नीचे दी गई तालिका में ऊपर वर्णित प्रत्येक बॉक्स प्लॉट प्रकार के लिए ggplot2 कॉल सूचीबद्ध है:
| उद्देश्य | Code |
|---|---|
| बेसिक बॉक्स प्लॉट |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() |
| दिशा बदलें |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + coord_flip() |
| नोचेड बॉक्स प्लॉट |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(notch = TRUE) |
| Box घबराए हुए बिंदुओं के साथ प्लॉट |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21)) |
| समूह के अनुसार रंग भरें |
ggplot(df, aes(x = x1, y = y, color = x1)) + geom_boxplot() |
| प्रत्येक श्रेणी में एकाधिक समूह |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(aes(fill = x2)) |
| समूह माध्य जोड़ें |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + stat_summary(fun = mean, geom = "point") |
यह भी जांचें: - शुरुआती लोगों के लिए आर ट्यूटोरियल: आर प्रोग्रामिंग भाषा सीखें












