R Language
ggplot2
खोज…
टिप्पणियों
ggplot2
की अपनी संपूर्ण संदर्भ वेबसाइट http://ggplot2.tidyverse.org/ है ।
अधिकांश समय, प्लॉट डेटा की संरचना या सामग्री (उदाहरण के लिए data.frame
) को बाद में प्लॉट के भीतर चीजों को समायोजित करने की तुलना में अनुकूलित करना अधिक सुविधाजनक होता है।
RStudio एक बहुत ही उपयोगी "डेटा विज़ुअलाइज़ेशन ggplot2" के साथ प्रकाशित करता है, जो यहां पाया जा सकता है ।
तितर बितर भूखंडों
हम एक सरल स्कैटर प्लॉट का निर्माण निम्नानुसार निर्मित आइरिस डेटा सेट का उपयोग करके करते हैं:
library(ggplot2)
ggplot(iris, aes(x = Petal.Width, y = Petal.Length, color = Species)) +
geom_point()
कई भूखंडों को प्रदर्शित करना
विभिन्न facet
साथ एक छवि में कई भूखंडों को प्रदर्शित करें। इस पद्धति का एक फायदा यह है कि सभी कुल्हाड़ियाँ चार्ट में समान पैमाने साझा करती हैं, जिससे एक नज़र में उनकी तुलना करना आसान हो जाता है। हम ggplot2
में शामिल mpg
डेटासेट का उपयोग करेंगे।
चार्ट को लाइन से लपेटें (चौकोर लेआउट बनाने का प्रयास):
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point() +
facet_wrap(~class)
एक पंक्ति पर कई चार्ट प्रदर्शित करें, कई कॉलम:
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point() +
facet_grid(.~class)
एक स्तंभ पर कई चार्ट प्रदर्शित करें, कई पंक्तियाँ:
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point() +
facet_grid(class~.)
2 चरों द्वारा ग्रिड में कई चार्ट प्रदर्शित करें:
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point() +
facet_grid(trans~class) #"row" parameter, then "column" parameter
साजिश रचने के लिए अपना डेटा तैयार करें
ggplot2
एक लंबे डेटा फ्रेम के साथ सबसे अच्छा काम करता है। निम्न नमूना डेटा जो मिठाई के लिए 20 अलग-अलग दिनों में कीमतों का प्रतिनिधित्व करता है, एक प्रारूप में वर्णित है, क्योंकि प्रत्येक श्रेणी में एक कॉलम है।
set.seed(47)
sweetsWide <- data.frame(date = 1:20,
chocolate = runif(20, min = 2, max = 4),
iceCream = runif(20, min = 0.5, max = 1),
candy = runif(20, min = 1, max = 3))
head(sweetsWide)
## date chocolate iceCream candy
## 1 1 3.953924 0.5890727 1.117311
## 2 2 2.747832 0.7783982 1.740851
## 3 3 3.523004 0.7578975 2.196754
## 4 4 3.644983 0.5667152 2.875028
## 5 5 3.147089 0.8446417 1.733543
## 6 6 3.382825 0.6900125 1.405674
परिवर्तित करने के लिए sweetsWide
साथ प्रयोग के लिए लंबे प्रारूप करने के लिए ggplot2
, आधार आर से कई उपयोगी काम करता है, और संकुल reshape2
, data.table
और tidyr
(कालानुक्रमिक क्रम में) का उपयोग किया जा सकता है:
# reshape from base R
sweetsLong <- reshape(sweetsWide, idvar = 'date', direction = 'long',
varying = list(2:4), new.row.names = NULL, times = names(sweetsWide)[-1])
# melt from 'reshape2'
library(reshape2)
sweetsLong <- melt(sweetsWide, id.vars = 'date')
# melt from 'data.table'
# which is an optimized & extended version of 'melt' from 'reshape2'
library(data.table)
sweetsLong <- melt(setDT(sweetsWide), id.vars = 'date')
# gather from 'tidyr'
library(tidyr)
sweetsLong <- gather(sweetsWide, sweet, price, chocolate:candy)
सभी एक समान परिणाम देते हैं:
head(sweetsLong)
## date sweet price
## 1 1 chocolate 3.953924
## 2 2 chocolate 2.747832
## 3 3 chocolate 3.523004
## 4 4 chocolate 3.644983
## 5 5 chocolate 3.147089
## 6 6 chocolate 3.382825
लंबी और चौड़ी प्रारूप के बीच डेटा परिवर्तित करने के विवरण के लिए लंबी और चौड़ी रूपों के बीच डेटा को फिर से आकार देना भी देखें।
जिसके परिणामस्वरूप sweetsLong
में कीमतों का एक कॉलम और मिठाई के प्रकार का वर्णन करने वाला एक कॉलम होता है। अब साजिश करना बहुत सरल है:
library(ggplot2)
ggplot(sweetsLong, aes(x = date, y = price, colour = sweet)) + geom_line()
प्लॉट में क्षैतिज और ऊर्ध्वाधर रेखाएं जोड़ें
सभी श्रेणीबद्ध चर के लिए एक सामान्य क्षैतिज रेखा जोड़ें
# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))
p1 <- ggplot(df, aes(x=x, y=y))
+ geom_bar(position = "dodge", stat = 'identity')
+ theme_bw()
p1 + geom_hline(aes(yintercept=5), colour="#990000", linetype="dashed")
प्रत्येक श्रेणीगत चर के लिए एक क्षैतिज रेखा जोड़ें
# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))
# add horizontal levels for drawing lines
df$hval <- df$y + 2
p1 <- ggplot(df, aes(x=x, y=y))
+ geom_bar(position = "dodge", stat = 'identity')
+ theme_bw()
p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), colour="#990000", width=0.75)
समूहीकृत सलाखों के ऊपर क्षैतिज रेखा जोड़ें
# sample data
df <- data.frame(x = rep(c('A', 'B'), times=2),
group = rep(c('G1', 'G2'), each=2),
y = c(3, 4, 5, 6),
hval = c(5, 6, 7, 8))
p1 <- ggplot(df, aes(x=x, y=y, fill=group))
+ geom_bar(position="dodge", stat="identity")
p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval),
colour="#990000",
position = "dodge",
linetype = "dashed")
वर्टिकल लाइन जोड़ें
# sample data
df <- data.frame(group=rep(c('A', 'B'), each=20),
x = rnorm(40, 5, 2),
y = rnorm(40, 10, 2))
p1 <- ggplot(df, aes(x=x, y=y, colour=group)) + geom_point()
p1 + geom_vline(aes(xintercept=5), color="#990000", linetype="dashed")
ऊर्ध्वाधर और क्षैतिज बार चार्ट
ggplot(data = diamonds, aes(x = cut, fill =color)) +
geom_bar(stat = "count", position = "dodge")
यह एक क्षैतिज बार चार्ट प्राप्त करना संभव है, बस ggplot ऑब्जेक्ट में ord_flip () सौंदर्य जोड़ने:
ggplot(data = diamonds, aes(x = cut, fill =color)) +
geom_bar(stat = "count", position = "dodge")+
coord_flip()
वायलिन प्लाट
वायलिन प्लॉट कर्नेल घनत्व वर्टिकल प्लेन में प्रतिबिंबित अनुमान हैं। वे किसी भी मतभेदों को उजागर करने में मदद करने वाले मिररिंग के साथ, कई वितरणों को साइड-बाय-साइड कल्पना करने के लिए इस्तेमाल किया जा सकता है।
ggplot(diamonds, aes(cut, price)) +
geom_violin()
वायलिन भूखंडों को संगीत वाद्ययंत्र के सदृश नाम दिया गया है, यह विशेष रूप से दिखाई देता है जब उन्हें एक ओवरलैड बॉक्सप्लेट के साथ जोड़ा जाता है। यह विज़ुअलाइज़ेशन तब Tukey के 5 नंबर सारांश (बॉक्सप्लेट्स के रूप में) और पूर्ण निरंतर घनत्व अनुमान (वायलिन) के संदर्भ में अंतर्निहित वितरण का वर्णन करता है।
ggplot(diamonds, aes(cut, price)) +
geom_violin() +
geom_boxplot(width = .1, fill = "black", outlier.shape = NA) +
stat_summary(fun.y = "median", geom = "point", col = "white")
Qplot के साथ बुनियादी भूखंडों का उत्पादन
qplot का उद्देश्य बेस आर plot()
फ़ंक्शन के समान है, बहुत अधिक विनिर्देशों की आवश्यकता के बिना हमेशा अपने डेटा को प्लॉट करने की कोशिश करना।
बुनियादी qplot
qplot(x = disp, y = mpg, data = mtcars)
रंग जोड़ना
qplot(x = disp, y = mpg, colour = cyl,data = mtcars)
एक चिकनी जोड़ने
qplot(x = disp, y = mpg, geom = c("point", "smooth"), data = mtcars)