मुझे लगता है कि डेटा विज़ुअलाइज़ेशन किसी भी वर्णनात्मक और एनालिटिक्स रिपोर्टिंग को डेटा के एक हिस्से पर दिखाने की सबसे अच्छी तकनीक है। मैं उन लोगों में से हूं जिन्हें डेटा विज़ुअलाइज़ेशन बहुत पसंद है। आप पूरी कहानी एक ही स्क्रीन पर दिखा सकते हैं—खैर, यह डेटा की जटिलता पर भी निर्भर करता है। यदि आप यह ट्यूटोरियल पढ़ रहे हैं, तो मेरा मानना है कि आप R के Ggplot2 पैकेज से अवगत होंगे, जिसका उपयोग विश्लेषण के लिए बढ़िया चार्ट बनाने में होता है, लेकिन इसमें कुछ हद तक डायनेमिक विशेषताओं की कमी है।
अब Highcharter पर लौटते हैं, यह HighCharts जावास्क्रिप्ट लाइब्रेरी और उसके मॉड्यूल का R रैपर है।
इस पैकेज की मुख्य विशेषताएं हैं:
आप एक ही शैली में विभिन्न चार्ट बना सकते हैं, जैसे स्कैटर, बबल, टाइम सीरीज़, हीटमैप, ट्रीमैप, बार चार्ट आदि।
यह विभिन्न R ऑब्जेक्ट्स को सपोर्ट करता है।
यह Highstocks चार्ट्स, कोरॉप्लैथ्स को सपोर्ट करता है।
इसमें पाइपिंग स्टाइल है जिसे सभी R उपयोगकर्ता और प्रोग्रामर पसंद करते हैं।
बेहतरीन लुक्स के साथ ढेरों थीम्स उपलब्ध हैं।
चलिए सीधे काम पर आते हैं और ऊपर बताई गई विशेषताओं का इस्तेमाल करते हुए Highcharter के साथ कुछ विज़ुअलाइज़ेशन बनाते हैं:
hchart फ़ंक्शन का उपयोग करके कुछ बुनियादी चार्ट बनाना
hchart एक जेनरिक फ़ंक्शन है जो एक ऑब्जेक्ट लेता है और एक highcharter ऑब्जेक्ट लौटाता है। कुछ फ़ंक्शंस का व्यवहार ggplot2 पैकेज के फ़ंक्शंस जैसा है, जैसे:
hchart, ggplot2 के qplot जैसा काम करता है।
hc_add_series, ggplot2 के geom_S जैसा काम करता है।
hcaes, ggplot2 के aes जैसा काम करता है।
चलिए एक डेटासेट चुनते हैं। मैं Highcharter पैकेज में उपलब्ध Pokemon डेटासेट लेने जा रहा हूं। डेटासेट की एक झलक देखें।
pokemon%>%
count(type_1)%>%
arrange(n)%>%
hchart(type ="bar", hcaes(x = type_1, y = n))संचालित द्वारा
तो आपको पोकेमॉन के type 1 श्रेणी के संबंध में एक बार चार्ट मिल गया।
मान लीजिए आपको इसके बजाय कॉलम चार्ट चाहिए, तो आपको केवल type को column में बदलना है।
pokemon%>%
count(type_1)%>%
arrange(n)%>%
hchart(type ="column", hcaes(x = type_1, y = n))संचालित द्वारा
ट्रीमैप
pokemon%>%
count(type_1)%>%
arrange(n)%>%
hchart(type ="treemap", hcaes(x = type_1, value = n, color = n))संचालित द्वारा
हम hc_add_series का उपयोग करके भी चार्ट प्लॉट कर सकते हैं। यह highchart ऑब्जेक्ट में सीरीज़ जोड़ने और हटाने के लिए उपयोग होता है।
स्कैटरप्लॉट
highchart()%>%
hc_add_series(pokemon,"scatter", hcaes(x = height, y = weight))संचालित द्वारा
ggplot2 के geom_ फ़ंक्शंस और hc_add_series में मुख्य अंतर यह है कि हमें हर फ़ंक्शन में डेटा और एस्थेटिक्स को स्पष्ट रूप से जोड़ना पड़ता है, जबकि ggplot2 में आप डेटा और एस्थेटिक्स को एक लेयर में जोड़कर आगे और geoms जोड़ सकते हैं जो उसी डेटा और एस्थेटिक्स पर काम कर सकें।
एक सटीक उदाहरण नीचे ggplot2 पैकेज के डायमंड्स डेटासेट का उपयोग करके दिया गया है।
data(diamonds, package ="ggplot2")
set.seed(123)
data <- sample_n(diamonds,300)
modlss <- loess(price ~ carat, data = data)
fit <- arrange(augment(modlss), carat)
highchart()%>%
hc_add_series(data, type ="scatter",
hcaes(x = carat, y = price, size = depth, group = cut))%>%
hc_add_series(fit, type ="line", hcaes(x = carat, y = .fitted),
name ="Fit", id ="fit")%>%
hc_add_series(fit, type ="arearange",
hcaes(x = carat, low = .fitted -2*.se.fit,
high = .fitted +2*.se.fit),
linkedTo ="fit")संचालित द्वारा
जैसा कि उदाहरण में दिया गया है, ग्राफ़ तीन सीरीज़—स्कैटरप्लॉट, लाइन और एरिया-रेंज—से मिलकर प्लॉट किया गया है।
आइए hc_add_series का उपयोग करके highchart के जावास्क्रिप्ट डेवलपमेंट को R में दोहराते हैं।
highchart()%>%
hc_chart(type ="area")%>%
hc_title(text ="Historic and Estimated Worldwide Population Distribution by Region")%>%
hc_subtitle(text ="Source: Wikipedia.org")%>%
hc_xAxis(categories = c("1750","1800","1850","1900","1950","1999","2050"),
tickmarkPlacement ="on",
title = list(enabled =FALSE))%>%
hc_yAxis(title = list(text ="Percent"))%>%
hc_tooltip(pointFormat = "<span style=\"color:{series.color}\">{series.name}</span>:<b>{point.percentage:.1f}%</b>({point.y:,.0f} millions)<br/>",
shared =TRUE)%>%
hc_plotOptions(area = list(
stacking ="percent",
lineColor ="#ffffff",
lineWidth =1,
marker = list(
lineWidth =1,
lineColor ="#ffffff")))%>%
hc_add_series(name ="Asia", data = c(502,635,809,947,1402,3634,5268))%>%
hc_add_series(name ="Africa", data = c(106,107,111,133,221,767,1766))%>%
hc_add_series(name ="Europe", data = c(163,203,276,408,547,729,628))%>%
hc_add_series(name ="America", data = c(18,31,54,156,339,818,1201))%>%
hc_add_series(name ="Oceania", data = c(2,2,2,6,13,30,46))संचालित द्वारा
तुलना करते समय आप देख सकते हैं कि जावास्क्रिप्ट कोड के प्रत्येक ब्लॉक को R फ़ंक्शंस में बदल दिया गया है, जो एक-दूसरे से पाइपलाइन किए गए हैं। हम hctooltip के pointFormat जैसे कुछ आर्ग्युमेंट्स देख सकते हैं, जिसका फॉर्मेट जावास्क्रिप्ट कोड जैसा ही है—विवरण के लिए आप यहां देख सकते हैं।
Highstocks
Highstocks वित्तीय और टाइम सीरीज़ विश्लेषण के चार्ट होते हैं, यह quamtmod लाइब्रेरी के साथ अच्छी तरह काम करता है, और सिंबल चार्ट करना आसान है, फिर आप hc_add_series का उपयोग करके और सीरीज़ जोड़ सकते हैं।
x <- getSymbols("GOOG", auto.assign =FALSE)
hchart(x)संचालित द्वारा
जैसा कि चार्ट में है, हमें अतिरिक्त कोड जोड़ने की ज़रूरत नहीं पड़ती, hchart xts ऑब्जेक्ट के साथ बहुत कुशलता से काम करता है और डेटा का डायनेमिक स्नैपशॉट देता है। आप ज़ूम फ़ंक्शनैलिटी का उपयोग करके बेहतर विश्लेषण के लिए डेटा को छोटे हिस्सों में ड्रिल डाउन कर सकते हैं।
चलिए hc_add_series का उपयोग करते हैं।
y <- getSymbols("AMZN", auto.assign =FALSE)
highchart(type ="stock")%>%
hc_add_series(x)%>%
hc_add_series(y, type ="ohlc")संचालित द्वारा
जैसा कि आप देख सकते हैं, विज़ुअलाइज़ेशन बड़े पैमाने के डेटा को बहुत कुशलता से समायोजित कर रहा है।
विभिन्न xts ऑब्जेक्ट्स के साथ स्टॉक को आज़माएं।
Highmaps
Highcharter के साथ मानचित्र प्लॉट करने का सबसे आसान तरीका hcmap फ़ंक्शन का उपयोग है। highmaps की कलेक्शन से एक URL चुनें और hcmap फ़ंक्शन में उसे मानचित्र के रूप में उपयोग करें। यह मानचित्र डाउनलोड करेगा और mapdata आर्ग्युमेंट के रूप में सूचना का उपयोग करके एक ऑब्जेक्ट बनाएगा।
चलिए भारत का मानचित्र प्लॉट करते हैं।
hcmap("https://code.highcharts.com/mapdata/countries/in/in-all.js")%>%
hc_title(text ="India")संचालित द्वारा
यह तो सादा मानचित्र है—इसे कोरॉप्लैथ्स में बदलने के बारे में क्या ख्याल है?
Highcharts मैप कलेक्शन से डाउनलोड किए गए हर मानचित्र डेटा में डेटा को जोड़ने के लिए कीज़ होती हैं। मैप और डेटा को कैसे जोड़ा जाए यह जानने के लिए 2 फ़ंक्शंस मदद करते हैं, जो यह बताते हैं कि कौन-से क्षेत्र कोडेड हैं:
download_map_data: highcharts कलेक्शन से geojson डेटा डाउनलोड करें।
get_data_from_map: मानचित्र के प्रत्येक क्षेत्र की प्रॉपर्टीज़ प्राप्त करें, जैसे कि मैप डेटा की कीज़।
mapdata <- get_data_from_map(download_map_data("https://code.highcharts.com/mapdata/countries/in/in-all.js"))
glimpse(mapdata)संचालित द्वारा
आइए एक चार्ट बनाते हैं जो बेहतर विश्लेषण के लिए दूसरे चार्ट में ड्रिल डाउन करता है। यदि आप R में सूचियों को समझते हैं, तो आप कोड को और प्रभावी ढंग से समझ सकेंगे।
df <- data_frame(
name = c("Animals","Fruits","Cars"),
y = c(5,2,4),
drilldown = tolower(name))
ds <- list_parse(df)
names(ds)<-NULL
hc <- highchart()%>%
hc_chart(type ="column")%>%
hc_title(text ="Basic drilldown")%>%
hc_xAxis(type ="category")%>%
hc_legend(enabled =FALSE)%>%
hc_plotOptions(
series = list(
boderWidth =0,
dataLabels = list(enabled =TRUE)))%>%
hc_add_series(
name ="Things",
colorByPoint =TRUE,
data = ds
)
dfan <- data_frame(
name = c("Cats","Dogs","Cows","Sheep","Pigs"),
value = c(4,3,1,2,1))
dffru <- data_frame(
name = c("Apple","Organes"),
value = c(4,2))
dfcar <- data_frame(
name = c("Toyota","Opel","Volkswage"),
value = c(4,2,2))
second_el_to_numeric <-function(ls){
map(ls,function(x){
x[[2]]<- as.numeric(x[[2]])
x
})}
dsan <- second_el_to_numeric(list_parse2(dfan))
dsfru <- second_el_to_numeric(list_parse2(dffru))
dscar <- second_el_to_numeric(list_parse2(dfcar))
hc %>%
hc_drilldown(
allowPointDrilldown =TRUE,
series = list(
list(
id ="animals",
data = dsan
),
list(
id ="fruits",
data = dsfru
),
list(
id ="cars",
data = dscar
)))संचालित द्वारा
tm$tm <- tm$tm %>%
tbl_df()%>%
left_join(pokemon %>% select(type_1, type_2, color_f)%>% distinct(), by = c("type_1","type_2"))%>%
left_join(pokemon %>% select(type_1, color_1)%>% distinct(), by = c("type_1"))%>%
mutate(type_1 = paste0("Main ", type_1),
color = ifelse(is.na(color_f), color_1, color_f))
highchart()%>%
hc_add_series_treemap(tm, allowDrillToNode =TRUE,
layoutAlgorithm ="squarified")संचालित द्वारा
चलिए डेटा एक्सपोर्ट करने की फ़ंक्शनैलिटी जोड़ते हैं।
pokemon%>%
count(type_1)%>%
arrange(n)%>%
hchart(type ="bar", hcaes(x = type_1, y = n, color = type_1))%>%
hc_exporting(enabled =TRUE)संचालित द्वारा
अंत में, हम कुछ थीम्स जोड़ते हैं।
pokemon%>%
count(type_1)%>%
arrange(n)%>%
hchart(type ="bar", hcaes(x = type_1, y = n, color = type_1))%>%
hc_exporting(enabled =TRUE)%>%
hc_add_theme(hc_theme_chalk())संचालित द्वारा
आप यहां से बहुत कुछ सीख सकते हैं, यह Highcharter के लिए एक संपूर्ण लाइब्रेरी है। मैं वेदर डेटासेट पर बनाया गया अपना एक पसंदीदा ग्राफ़ भी साझा कर रहा हूं—यहां एक दिलचस्प आर्ग्युमेंट polar उपयोग किया गया है; आर्ग्युमेंट को TRUE करने से पूरी कहानी बदल जाती है।
data("weather")
x <- c("Min","Mean","Max")
y <- sprintf("{point.%s}", c("min_temperaturec","mean_temperaturec","max_temperaturec"))
tltip <- tooltip_table(x, y)
hchart(weather, type ="columnrange",
hcaes(x = date, low = min_temperaturec, high = max_temperaturec,
color = mean_temperaturec))%>%
hc_chart(polar =TRUE)%>%
hc_yAxis( max =30, min =-10, labels = list(format ="{value} C"),
showFirstLabel =FALSE)%>%
hc_xAxis(
title = list(text =""), gridLineWidth =0.5,
labels = list(format ="{value: %b}"))%>%
hc_tooltip(useHTML =TRUE, pointFormat = tltip,
headerFormat = as.character(tags$small("{point.x:%d %B, %Y}")))संचालित द्वारा
मुझे लगता है कि डेटा विज़ुअलाइज़ेशन किसी भी वर्णनात्मक और एनालिटिक्स रिपोर्टिंग को डेटा के एक हिस्से पर दिखाने की सबसे अच्छी तकनीक है। मैं उन लोगों में से हूं जिन्हें डेटा विज़ुअलाइज़ेशन बहुत पसंद है। आप पूरी कहानी एक ही स्क्रीन पर दिखा सकते हैं—खैर, यह डेटा की जटिलता पर भी निर्भर करता है। यदि आप यह ट्यूटोरियल पढ़ रहे हैं, तो मेरा मानना है कि आप R के Ggplot2 पैकेज से अवगत होंगे, जिसका उपयोग विश्लेषण के लिए बढ़िया चार्ट बनाने में होता है, लेकिन इसमें कुछ हद तक डायनेमिक विशेषताओं की कमी है।
अब Highcharter पर लौटते हैं, यह HighCharts जावास्क्रिप्ट लाइब्रेरी और उसके मॉड्यूल का R रैपर है।
इस पैकेज की मुख्य विशेषताएं हैं:
चलिए सीधे काम पर आते हैं और ऊपर बताई गई विशेषताओं का इस्तेमाल करते हुए Highcharter के साथ कुछ विज़ुअलाइज़ेशन बनाते हैं:
hchart फ़ंक्शन का उपयोग करके कुछ बुनियादी चार्ट बनाना
hchart एक जेनरिक फ़ंक्शन है जो एक ऑब्जेक्ट लेता है और एक highcharter ऑब्जेक्ट लौटाता है। कुछ फ़ंक्शंस का व्यवहार ggplot2 पैकेज के फ़ंक्शंस जैसा है, जैसे:
qplotजैसा काम करता है।geom_Sजैसा काम करता है।aesजैसा काम करता है।चलिए एक डेटासेट चुनते हैं। मैं Highcharter पैकेज में उपलब्ध Pokemon डेटासेट लेने जा रहा हूं। डेटासेट की एक झलक देखें।
चलिए एक बार चार्ट प्लॉट करते हैं।
तो आपको पोकेमॉन के type 1 श्रेणी के संबंध में एक बार चार्ट मिल गया।
मान लीजिए आपको इसके बजाय कॉलम चार्ट चाहिए, तो आपको केवल type को column में बदलना है।
ट्रीमैप
हम hc_add_series का उपयोग करके भी चार्ट प्लॉट कर सकते हैं। यह highchart ऑब्जेक्ट में सीरीज़ जोड़ने और हटाने के लिए उपयोग होता है।
स्कैटरप्लॉट
ggplot2 के geom_ फ़ंक्शंस और hc_add_series में मुख्य अंतर यह है कि हमें हर फ़ंक्शन में डेटा और एस्थेटिक्स को स्पष्ट रूप से जोड़ना पड़ता है, जबकि ggplot2 में आप डेटा और एस्थेटिक्स को एक लेयर में जोड़कर आगे और geoms जोड़ सकते हैं जो उसी डेटा और एस्थेटिक्स पर काम कर सकें।
एक सटीक उदाहरण नीचे ggplot2 पैकेज के डायमंड्स डेटासेट का उपयोग करके दिया गया है।
जैसा कि उदाहरण में दिया गया है, ग्राफ़ तीन सीरीज़—स्कैटरप्लॉट, लाइन और एरिया-रेंज—से मिलकर प्लॉट किया गया है।
आइए hc_add_series का उपयोग करके highchart के जावास्क्रिप्ट डेवलपमेंट को R में दोहराते हैं।
तुलना करते समय आप देख सकते हैं कि जावास्क्रिप्ट कोड के प्रत्येक ब्लॉक को R फ़ंक्शंस में बदल दिया गया है, जो एक-दूसरे से पाइपलाइन किए गए हैं। हम hctooltip के pointFormat जैसे कुछ आर्ग्युमेंट्स देख सकते हैं, जिसका फॉर्मेट जावास्क्रिप्ट कोड जैसा ही है—विवरण के लिए आप यहां देख सकते हैं।
Highstocks
Highstocks वित्तीय और टाइम सीरीज़ विश्लेषण के चार्ट होते हैं, यह
quamtmodलाइब्रेरी के साथ अच्छी तरह काम करता है, और सिंबल चार्ट करना आसान है, फिर आपhc_add_seriesका उपयोग करके और सीरीज़ जोड़ सकते हैं।जैसा कि चार्ट में है, हमें अतिरिक्त कोड जोड़ने की ज़रूरत नहीं पड़ती, hchart xts ऑब्जेक्ट के साथ बहुत कुशलता से काम करता है और डेटा का डायनेमिक स्नैपशॉट देता है। आप ज़ूम फ़ंक्शनैलिटी का उपयोग करके बेहतर विश्लेषण के लिए डेटा को छोटे हिस्सों में ड्रिल डाउन कर सकते हैं।
चलिए hc_add_series का उपयोग करते हैं।
जैसा कि आप देख सकते हैं, विज़ुअलाइज़ेशन बड़े पैमाने के डेटा को बहुत कुशलता से समायोजित कर रहा है।
विभिन्न xts ऑब्जेक्ट्स के साथ स्टॉक को आज़माएं।
Highmaps
Highcharter के साथ मानचित्र प्लॉट करने का सबसे आसान तरीका
hcmapफ़ंक्शन का उपयोग है। highmaps की कलेक्शन से एक URL चुनें और hcmap फ़ंक्शन में उसे मानचित्र के रूप में उपयोग करें। यह मानचित्र डाउनलोड करेगा और mapdata आर्ग्युमेंट के रूप में सूचना का उपयोग करके एक ऑब्जेक्ट बनाएगा।चलिए भारत का मानचित्र प्लॉट करते हैं।
यह तो सादा मानचित्र है—इसे कोरॉप्लैथ्स में बदलने के बारे में क्या ख्याल है?
Highcharts मैप कलेक्शन से डाउनलोड किए गए हर मानचित्र डेटा में डेटा को जोड़ने के लिए कीज़ होती हैं। मैप और डेटा को कैसे जोड़ा जाए यह जानने के लिए 2 फ़ंक्शंस मदद करते हैं, जो यह बताते हैं कि कौन-से क्षेत्र कोडेड हैं:
मैप्स और कोरॉप्लैथ्स में hc_add_series के साथ कुछ प्रयोग करें। कुछ विवरण और उदाहरणों के लिए यहां जाएं।
प्लगइन्स
अब highcharter द्वारा दिए गए कुछ प्लगइन्स आज़माते हैं, जैसे ग्रुपिंग, ड्रिल-डाउन, डाउनलोडिंग, डेटा प्रिंट करना और कुछ शानदार थीम्स।
चलिए mpg डेटासेट के डेटा को ग्रुप करते हैं, यहां बेहतर विज़ुअलाइज़ेशन के लिए हमने एक सूची बनाई है जो निर्माता के अनुसार डेटा को वर्गीकृत करती है।
आइए एक चार्ट बनाते हैं जो बेहतर विश्लेषण के लिए दूसरे चार्ट में ड्रिल डाउन करता है। यदि आप R में सूचियों को समझते हैं, तो आप कोड को और प्रभावी ढंग से समझ सकेंगे।
आइए अन्य चार्ट्स पर ड्रिल डाउन लागू करते हैं।
चलिए डेटा एक्सपोर्ट करने की फ़ंक्शनैलिटी जोड़ते हैं।
आप यहां से बहुत कुछ सीख सकते हैं, यह Highcharter के लिए एक संपूर्ण लाइब्रेरी है। मैं वेदर डेटासेट पर बनाया गया अपना एक पसंदीदा ग्राफ़ भी साझा कर रहा हूं—यहां एक दिलचस्प आर्ग्युमेंट
polarउपयोग किया गया है; आर्ग्युमेंट को TRUE करने से पूरी कहानी बदल जाती है।यदि आप R में डेटा विज़ुअलाइज़ेशन के बारे में और सीखना चाहते हैं, तो DataCamp का Data Visualization with ggplot2 (Part 1) कोर्स लें और हमारा R Formula Tutorial भी देखें।