ggplot2 का उपयोग करके R में स्कैटर प्लॉट (उदाहरण सहित)
ग्राफ़ डेटा विश्लेषण की प्रक्रिया का तीसरा भाग है। पहला भाग इस बारे में है डेटा निकालना, दूसरा भाग इससे संबंधित है डेटा को साफ करना और उसमें हेरफेर करना. अंत में, डेटा वैज्ञानिक को इसकी आवश्यकता हो सकती है अपने परिणामों को ग्राफ़िक रूप से संप्रेषित करें.
डेटा वैज्ञानिक की नौकरी की समीक्षा निम्नलिखित चित्र में की जा सकती है
- डेटा वैज्ञानिक का पहला काम एक शोध प्रश्न को परिभाषित करना है। यह शोध प्रश्न परियोजना के उद्देश्यों और लक्ष्यों पर निर्भर करता है।
- उसके बाद, सबसे प्रमुख कार्यों में से एक फीचर इंजीनियरिंग है। डेटा वैज्ञानिक को डेटा एकत्र करने, उसमें हेरफेर करने और उसे साफ करने की आवश्यकता होती है
- जब यह चरण पूरा हो जाता है, तो वह डेटासेट का अन्वेषण शुरू कर सकता है। कभी-कभी, किसी नई खोज के कारण मूल परिकल्पना को परिष्कृत करना और बदलना आवश्यक होता है।
- जब व्याख्यात्मक विश्लेषण प्राप्त करने के लिए, डेटा वैज्ञानिक को पाठक की क्षमता पर विचार करना होगा अंतर्निहित अवधारणाओं और मॉडलों को समझें.
- उनके परिणामों को ऐसे प्रारूप में प्रस्तुत किया जाना चाहिए जिसे सभी हितधारक समझ सकें। संवाद परिणाम एक के माध्यम से है ग्राफ.
- जटिल विश्लेषण को सरल बनाने के लिए ग्राफ एक अविश्वसनीय उपकरण है।
ggplot2 पैकेज
ट्यूटोरियल का यह भाग R के साथ ग्राफ/चार्ट बनाने पर केंद्रित है।
इस ट्यूटोरियल में, आप ggplot2 पैकेज का उपयोग करने जा रहे हैं। यह पैकेज विल्किंसन, 2005 द्वारा लिखित पुस्तक ग्रामर ऑफ़ ग्राफ़िक्स के सुसंगत अंतर्निहित पर बनाया गया है। ggplot2 बहुत लचीला है, इसमें उच्च स्तर के अमूर्तता पर कई थीम और प्लॉट विनिर्देश शामिल हैं। ggplot2 के साथ, आप 3-आयामी ग्राफ़िक्स प्लॉट नहीं कर सकते हैं और इंटरैक्टिव ग्राफ़िक्स नहीं बना सकते हैं।
ggplot2 में, एक ग्राफ निम्नलिखित तर्कों से बना होता है:
- तिथि
- सौंदर्य मानचित्रण
- ज्यामितीय वस्तु
- सांख्यिकीय रूपांतरण
- तराजू
- समन्वय प्रणाली
- स्थिति समायोजन
- faceting
आप ट्यूटोरियल में सीखेंगे कि उन तर्कों को कैसे नियंत्रित किया जाए।
ggplot2 का मूल सिंटैक्स है:
ggplot(data, mapping=aes()) + geometric object arguments: data: Dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common object are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
स्कैटर प्लॉट
आइए देखें कि ggplot mtcars डेटासेट के साथ कैसे काम करता है। आप mpg वेरिएबल और drat वेरिएबल का स्कैटरप्लॉट प्लॉट करके शुरू करते हैं।
बुनियादी स्कैटर प्लॉट
library(ggplot2) ggplot(mtcars, aes(x = drat, y = mpg)) + geom_point()
कोड स्पष्टीकरण
- आप सबसे पहले डेटासेट mtcars को ggplot में पास करें।
- Aes() तर्क के अंदर, आप x-अक्ष और y-अक्ष जोड़ते हैं।
- + चिह्न का मतलब है कि आप चाहते हैं कि R कोड को पढ़ता रहे। यह कोड को तोड़कर उसे अधिक पठनीय बनाता है।
- ज्यामितीय ऑब्जेक्ट के लिए geom_point() का उपयोग करें।
आउटपुट:
समूहों के साथ स्कैटर प्लॉट
कभी-कभी, डेटा के एक समूह (अर्थात् कारक स्तर डेटा) द्वारा मूल्यों में अंतर करना दिलचस्प हो सकता है।
ggplot(mtcars, aes(x = mpg, y = drat)) + geom_point(aes(color = factor(gear)))
कोड स्पष्टीकरण
- geom_point() के अंदर aes() समूह के रंग को नियंत्रित करता है। समूह एक कारक चर होना चाहिए। इस प्रकार, आप चर गियर को एक कारक में परिवर्तित करते हैं।
- कुल मिलाकर, आपके पास कोड aes(color = Factor(gear)) है जो बिंदुओं का रंग बदलता है।
आउटपुट:
अक्ष बदलें
डेटा को रीस्केल करना डेटा साइंटिस्ट की नौकरी का एक बड़ा हिस्सा है। दुर्लभ अवसरों पर डेटा एक सुंदर घंटी के आकार में आता है। आउटलायर्स के प्रति अपने डेटा को कम संवेदनशील बनाने का एक उपाय उन्हें रीस्केल करना है।
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) + geom_point(aes(color = factor(gear)))
कोड स्पष्टीकरण
- आप log() में x और y चरों को सीधे aes() मैपिंग के अंदर रूपांतरित करते हैं।
ध्यान दें कि मानकीकरण या सामान्यीकरण जैसे किसी भी अन्य परिवर्तन को लागू किया जा सकता है।
आउटपुट:
फिट किए गए मानों के साथ स्कैटर प्लॉट
आप ग्राफ में सूचना का एक और स्तर जोड़ सकते हैं। आप रैखिक प्रतिगमन के फिट किए गए मान को प्लॉट कर सकते हैं।
my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) + geom_point(aes(color = factor(gear))) + stat_smooth(method = "lm", col = "#C42126", se = FALSE, size = 1) my_graph
कोड स्पष्टीकरण
- ग्राफ़: आप अपने ग्राफ़ को वेरिएबल ग्राफ़ में संग्रहीत करते हैं। यह आगे के उपयोग के लिए सहायक है या कोड की बहुत जटिल लाइन से बचने के लिए
- तर्क stat_smooth() स्मूथिंग विधि को नियंत्रित करता है
- विधि = “lm”: रैखिक प्रतिगमन
- col = “#C42126”: लाइन के लाल रंग के लिए कोड
- se = FALSE: मानक त्रुटि प्रदर्शित न करें
- आकार = 1: रेखा का आकार 1 है
आउटपुट:
ध्यान दें कि अन्य समतलीकरण विधियाँ भी उपलब्ध हैं
- GLM
- गम
- लोएस: डिफ़ॉल्ट मान
- किनारा
ग्राफ़ में जानकारी जोड़ें
अभी तक, हमने ग्राफ़ में जानकारी नहीं जोड़ी है। ग्राफ़ को जानकारीपूर्ण होना चाहिए। पाठक को बिना किसी अतिरिक्त दस्तावेज़ का संदर्भ लिए ग्राफ़ को देखकर ही डेटा विश्लेषण के पीछे की कहानी समझनी चाहिए। इसलिए, ग्राफ़ को अच्छे लेबल की आवश्यकता होती है। आप labs() फ़ंक्शन के साथ लेबल जोड़ सकते हैं।
Lab() का मूल सिंटैक्स है:
lab(title = "Hello Guru99") argument: - title: Control the title. It is possible to change or add title with: - subtitle: Add subtitle below title - caption: Add caption below the graph - x: rename x-axis - y: rename y-axis Example:lab(title = "Hello Guru99", subtitle = "My first plot")
एक शीर्षक जोड़ें
जोड़ने के लिए एक अनिवार्य जानकारी स्पष्ट रूप से शीर्षक है।
my_graph + labs( title = "Plot Mile per hours and drat, in log" )
कोड स्पष्टीकरण
- my_graph: आप अपने द्वारा संग्रहीत ग्राफ़ का उपयोग करते हैं। यह हर बार जब आप ग्राफ़ में नई जानकारी जोड़ते हैं तो सभी कोड को फिर से लिखने से बचाता है।
- आप शीर्षक को lab() के अंदर लपेटते हैं।
- रेखा के लाल रंग के लिए कोड
- se = FALSE: मानक त्रुटि प्रदर्शित न करें
- आकार = 1: रेखा का आकार 1 है
आउटपुट:
गतिशील नाम वाला शीर्षक जोड़ें
गतिशील शीर्षक शीर्षक में अधिक सटीक जानकारी जोड़ने में सहायक होता है।
आप स्थिर टेक्स्ट और गतिशील टेक्स्ट को प्रिंट करने के लिए पेस्ट() फ़ंक्शन का उपयोग कर सकते हैं। पेस्ट() का मूल सिंटैक्स है:
paste("This is a text", A) arguments - " ": Text inside the quotation marks are the static text - A: Display the variable stored in A - Note you can add as much static text and variable as you want. You need to separate them with a comma
उदाहरण:
A <-2010 paste("The first year is", A)
आउटपुट:
## [1] "The first year is 2010"
B <-2018 paste("The first year is", A, "and the last year is", B)
आउटपुट:
## [1] "The first year is 2010 and the last year is 2018"
आप हमारे ग्राफ में एक गतिशील नाम जोड़ सकते हैं, अर्थात् mpg का औसत।
mean_mpg <- mean(mtcars$mpg) my_graph + labs( title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg) )
कोड स्पष्टीकरण
- आप mean_mpg चर में संग्रहीत mean(mtcars$mpg) के साथ mpg का औसत बनाते हैं
- आप mean_mpg के साथ paste() का उपयोग करके mpg का औसत मान लौटाने वाला एक गतिशील शीर्षक बना सकते हैं
आउटपुट:
उपशीर्षक जोड़ें
दो अतिरिक्त विवरण आपके ग्राफ को और अधिक स्पष्ट बना सकते हैं। आप उपशीर्षक और कैप्शन के बारे में बात कर रहे हैं। उपशीर्षक शीर्षक के ठीक नीचे होता है। कैप्शन यह बता सकता है कि गणना किसने की और डेटा का स्रोत क्या है।
my_graph + labs( title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
कोड स्पष्टीकरण
- lab() के अंदर, आपने जोड़ा:
- शीर्षक = “मील प्रति घंटा और ड्रैट के बीच संबंध”: शीर्षक जोड़ें
- उपशीर्षक = “गियर वर्ग के अनुसार संबंध टूटना”: उपशीर्षक जोड़ें
- कैप्शन = “लेखक की अपनी गणना: कैप्शन जोड़ें
- आप प्रत्येक नई जानकारी को अल्पविराम से अलग करते हैं, ,
- ध्यान रखें कि आप कोड की पंक्तियों को तोड़ते हैं। यह अनिवार्य नहीं है, और यह केवल कोड को अधिक आसानी से पढ़ने में मदद करता है
आउटपुट:
x-अक्ष और y-अक्ष का नाम बदलें
डेटासेट में वैरिएबल हमेशा स्पष्ट नहीं हो सकते हैं या परंपरा के अनुसार जब कई शब्द हों (जैसे कि GDP_CAP) तो _ का उपयोग करें। आप नहीं चाहेंगे कि ऐसा नाम आपके ग्राफ़ में दिखाई दे। नाम बदलना या इकाइयों जैसे अधिक विवरण जोड़ना महत्वपूर्ण है।
my_graph + labs( x = "Drat definition", y = "Mile per hours", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
कोड स्पष्टीकरण
- lab() के अंदर, आपने जोड़ा:
- x = “Drat परिभाषा”: x-अक्ष का नाम बदलें
- y = “मील प्रति घंटा”: y-अक्ष का नाम बदलें
आउटपुट:
तराजू पर नियंत्रण रखें
आप अक्ष के पैमाने को नियंत्रित कर सकते हैं.
जब आपको संख्याओं का अनुक्रम बनाना हो तो seq() फ़ंक्शन सुविधाजनक होता है। इसका मूल सिंटैक्स है:
seq(begin, last, by = x) arguments: - begin: First number of the sequence - last: Last number of the sequence - by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`
उदाहरण के लिए, यदि आप 0 के चरण के साथ 12 से 3 तक की श्रेणी बनाना चाहते हैं, तो आपके पास चार संख्याएँ होंगी, 0 4 8 12
seq(0, 12,4)
आउटपुट:
## [1] 0 4 8 12
आप x-अक्ष और y-अक्ष के स्केल को नीचे दिए अनुसार नियंत्रित कर सकते हैं
my_graph + scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) + scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) + labs( x = "Drat definition", y = "Mile per hours", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
कोड स्पष्टीकरण
- फ़ंक्शन scale_y_continuous() नियंत्रित करता है Y अक्ष
- फ़ंक्शन scale_x_continuous() नियंत्रित करता है X- अक्ष.
- पैरामीटर ब्रेक अक्ष के विभाजन को नियंत्रित करता है। आप मैन्युअल रूप से संख्याओं का अनुक्रम जोड़ सकते हैं या seq() फ़ंक्शन का उपयोग कर सकते हैं:
- seq(1, 3.6, by = 0.2): 2.4 के चरण के साथ 3.4 से 3 तक छह संख्याएँ बनाएँ
- seq(1, 1.6, by = 0.1): 1 से 1.6 तक 1 के चरण के साथ सात संख्याएँ बनाएँ
आउटपुट:
विषय
अंत में, R हमें अलग-अलग थीम के साथ प्लॉट को कस्टमाइज़ करने की अनुमति देता है। लाइब्रेरी ggplot2 में आठ थीम शामिल हैं:
- थीम_बीडब्ल्यू()
- थीम_लाइट()
- थीम_क्लासिस()
- थीम_लाइनड्रा()
- थीम_डार्क()
- थीम_मिनिमल()
- थीम_ग्रे()
- थीम_शून्य()
my_graph + theme_dark() + labs( x = "Drat definition, in log", y = "Mile per hours, in log", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
आउटपुट:
प्लॉट सुरक्षित करें
इन सभी चरणों के बाद, अब आपके ग्राफ़ को सहेजने और साझा करने का समय है। आप ग्राफ़ प्लॉट करने के ठीक बाद ggsave('NAME OF THE FILE) जोड़ते हैं और यह हार्ड ड्राइव पर संग्रहीत हो जाएगा।
ग्राफ़ को वर्किंग डायरेक्टरी में सहेजा जाता है। वर्किंग डायरेक्टरी की जाँच करने के लिए, आप यह कोड चला सकते हैं:
directory <-getwd() directory
आइए अपना शानदार ग्राफ बनाएं, इसे सेव करें और स्थान की जांच करें
my_graph + theme_dark() + labs( x = "Drat definition, in log", y = "Mile per hours, in log", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
आउटपुट:
ggsave("my_fantastic_plot.png")
आउटपुट:
## Saving 5 x 4 in image
नोट: केवल शैक्षणिक उद्देश्य के लिए, हमने आपके लिए डायरेक्टरी फ़ोल्डर खोलने के लिए open_folder() नामक एक फ़ंक्शन बनाया है। आपको बस नीचे दिए गए कोड को चलाने की ज़रूरत है और देखना है कि चित्र कहाँ संग्रहीत है। आपको my_fantastic_plot.png नाम की एक फ़ाइल दिखनी चाहिए।
# Run this code to create the function open_folder <- function(dir) { if (.Platform['OS.type'] == "windows") { shell.exec(dir) } else { system(paste(Sys.getenv("R_BROWSER"), dir)) } } # Call the function to open the folder open_folder(directory)
सारांश
आप नीचे दी गई तालिका में स्कैटर प्लॉट बनाने के लिए तर्कों को संक्षेप में प्रस्तुत कर सकते हैं:
उद्देश्य | कोड |
---|---|
बुनियादी स्कैटर प्लॉट |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
रंग समूह के साथ स्कैटर प्लॉट |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
फिट किए गए मान जोड़ें |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
शीर्षक जोड़ें |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99")) |
उपशीर्षक जोड़ें |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99")) |
नाम बदलें x |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
नाम बदलें |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
पैमाने को नियंत्रित करें |
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1) |
लॉग बनाएं |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
विषय |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
सहेजें |
ggsave("my_fantastic_plot.png") |