मुख्य सामग्री पर जाएं

R में Highcharter के साथ डेटा विज़ुअलाइज़ेशन

जानें कि Highcharter का उपयोग करके ऐसा विज़ुअलाइज़ेशन कैसे बनाएं जो ध्यान खींचे।
अपडेट किया गया 25 सित॰ 2026  · 12 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

मुझे लगता है कि डेटा विज़ुअलाइज़ेशन किसी भी वर्णनात्मक और एनालिटिक्स रिपोर्टिंग को डेटा के एक हिस्से पर दिखाने की सबसे अच्छी तकनीक है। मैं उन लोगों में से हूं जिन्हें डेटा विज़ुअलाइज़ेशन बहुत पसंद है। आप पूरी कहानी एक ही स्क्रीन पर दिखा सकते हैं—खैर, यह डेटा की जटिलता पर भी निर्भर करता है। यदि आप यह ट्यूटोरियल पढ़ रहे हैं, तो मेरा मानना है कि आप 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 डेटासेट लेने जा रहा हूं। डेटासेट की एक झलक देखें।

glimpse(pokemon)
## Observations: 718
## Variables: 20
## $ id              <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,...
## $ pokemon         <chr> "bulbasaur", "ivysaur", "venusaur", "charmande...
## $ species_id      <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,...
## $ height          <int> 7, 10, 20, 6, 11, 17, 5, 10, 16, 3, 7, 11, 3, ...
## $ weight          <int> 69, 130, 1000, 85, 190, 905, 90, 225, 855, 29,...
## $ base_experience <int> 64, 142, 236, 62, 142, 240, 63, 142, 239, 39, ...
## $ type_1          <chr> "grass", "grass", "grass", "fire", "fire", "fi...
## $ type_2          <chr> "poison", "poison", "poison", NA, NA, "flying"...
## $ attack          <int> 49, 62, 82, 52, 64, 84, 48, 63, 83, 30, 20, 45...
## $ defense         <int> 49, 63, 83, 43, 58, 78, 65, 80, 100, 35, 55, 5...
## $ hp              <int> 45, 60, 80, 39, 58, 78, 44, 59, 79, 45, 50, 60...
## $ special_attack  <int> 65, 80, 100, 60, 80, 109, 50, 65, 85, 20, 25, ...
## $ special_defense <int> 65, 80, 100, 50, 65, 85, 64, 80, 105, 20, 25, ...
## $ speed           <int> 45, 60, 80, 65, 80, 100, 43, 58, 78, 45, 30, 7...
## $ color_1         <chr> "#78C850", "#78C850", "#78C850", "#F08030", "#...
## $ color_2         <chr> "#A040A0", "#A040A0", "#A040A0", NA, NA, "#A89...
## $ color_f         <chr> "#81A763", "#81A763", "#81A763", "#F08030", "#...
## $ egg_group_1     <chr> "monster", "monster", "monster", "monster", "m...
## $ egg_group_2     <chr> "plant", "plant", "plant", "dragon", "dragon",...
## $ url_image       <chr> "1.png", "2.png", "3.png", "4.png", "5.png", "...

चलिए एक बार चार्ट प्लॉट करते हैं।

pokemon%>%
  count(type_1)%>%
  arrange(n)%>%
  hchart(type = "bar", hcaes(x = type_1, y = n))
bar chart

तो आपको पोकेमॉन के type 1 श्रेणी के संबंध में एक बार चार्ट मिल गया।

मान लीजिए आपको इसके बजाय कॉलम चार्ट चाहिए, तो आपको केवल type को column में बदलना है।

pokemon%>%
  count(type_1)%>%
  arrange(n)%>%
  hchart(type = "column", hcaes(x = type_1, y = n))
bar chart 2

ट्रीमैप

pokemon%>%
  count(type_1)%>%
  arrange(n)%>%
  hchart(type = "treemap", hcaes(x = type_1, value = n, color = n))
treemap

हम hc_add_series का उपयोग करके भी चार्ट प्लॉट कर सकते हैं। यह highchart ऑब्जेक्ट में सीरीज़ जोड़ने और हटाने के लिए उपयोग होता है।

scatterplot

स्कैटरप्लॉट

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")
scatterplot 2

जैसा कि उदाहरण में दिया गया है, ग्राफ़ तीन सीरीज़—स्कैटरप्लॉट, लाइन और एरिया-रेंज—से मिलकर प्लॉट किया गया है।

आइए hc_add_series का उपयोग करके highchart के जावास्क्रिप्ट डेवलपमेंट को R में दोहराते हैं।

highchart's javascript

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))
linechart

तुलना करते समय आप देख सकते हैं कि जावास्क्रिप्ट कोड के प्रत्येक ब्लॉक को R फ़ंक्शंस में बदल दिया गया है, जो एक-दूसरे से पाइपलाइन किए गए हैं। हम hctooltip के pointFormat जैसे कुछ आर्ग्युमेंट्स देख सकते हैं, जिसका फॉर्मेट जावास्क्रिप्ट कोड जैसा ही है—विवरण के लिए आप यहां देख सकते हैं।

Highstocks

Highstocks वित्तीय और टाइम सीरीज़ विश्लेषण के चार्ट होते हैं, यह quamtmod लाइब्रेरी के साथ अच्छी तरह काम करता है, और सिंबल चार्ट करना आसान है, फिर आप hc_add_series का उपयोग करके और सीरीज़ जोड़ सकते हैं।

x <- getSymbols("GOOG", auto.assign = FALSE)

hchart(x)
highstocks

जैसा कि चार्ट में है, हमें अतिरिक्त कोड जोड़ने की ज़रूरत नहीं पड़ती, hchart xts ऑब्जेक्ट के साथ बहुत कुशलता से काम करता है और डेटा का डायनेमिक स्नैपशॉट देता है। आप ज़ूम फ़ंक्शनैलिटी का उपयोग करके बेहतर विश्लेषण के लिए डेटा को छोटे हिस्सों में ड्रिल डाउन कर सकते हैं।

चलिए hc_add_series का उपयोग करते हैं।

y <- getSymbols("AMZN", auto.assign = FALSE)

highchart(type = "stock") %>%
  hc_add_series(x) %>%
  hc_add_series(y, type = "ohlc")
highstocks 2

जैसा कि आप देख सकते हैं, विज़ुअलाइज़ेशन बड़े पैमाने के डेटा को बहुत कुशलता से समायोजित कर रहा है।

विभिन्न xts ऑब्जेक्ट्स के साथ स्टॉक को आज़माएं।

Highmaps

Highcharter के साथ मानचित्र प्लॉट करने का सबसे आसान तरीका hcmap फ़ंक्शन का उपयोग है। highmaps की कलेक्शन से एक URL चुनें और hcmap फ़ंक्शन में उसे मानचित्र के रूप में उपयोग करें। यह मानचित्र डाउनलोड करेगा और mapdata आर्ग्युमेंट के रूप में सूचना का उपयोग करके एक ऑब्जेक्ट बनाएगा।

चलिए भारत का मानचित्र प्लॉट करते हैं।

hcmap("https://code.highcharts.com/mapdata/countries/in/in-all.js")%>%
  hc_title(text = "India")
highmap

यह तो सादा मानचित्र है—इसे कोरॉप्लैथ्स में बदलने के बारे में क्या ख्याल है?

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)
## Observations: 34
## Variables: 20
## $ `hc-group`    <chr> "admin1", "admin1", "admin1", "admin1", "admin1"...
## $ `hc-middle-x` <dbl> 0.65, 0.59, 0.50, 0.56, 0.46, 0.46, 0.51, 0.59, ...
## $ `hc-middle-y` <dbl> 0.81, 0.63, 0.74, 0.38, 0.64, 0.51, 0.34, 0.41, ...
## $ `hc-key`      <chr> "in-py", "in-ld", "in-wb", "in-or", "in-br", "in...
## $ `hc-a2`       <chr> "PY", "LD", "WB", "OR", "BR", "SK", "CT", "TN", ...
## $ labelrank     <chr> "2", "2", "2", "2", "2", "2", "2", "2", "2", "2"...
## $ hasc          <chr> "IN.PY", "IN.LD", "IN.WB", "IN.OR", "IN.BR", "IN...
## $ `alt-name`    <chr> "Pondicherry|Puduchcheri|Pondichéry", "Ã\u008dl...
## $ `woe-id`      <chr> "20070459", "2345748", "2345761", "2345755", "23...
## $ fips          <chr> "IN22", "IN14", "IN28", "IN21", "IN34", "IN29", ...
## $ `postal-code` <chr> "PY", "LD", "WB", "OR", "BR", "SK", "CT", "TN", ...
## $ name          <chr> "Puducherry", "Lakshadweep", "West Bengal", "Ori...
## $ country       <chr> "India", "India", "India", "India", "India", "In...
## $ `type-en`     <chr> "Union Territory", "Union Territory", "State", "...
## $ region        <chr> "South", "South", "East", "East", "East", "East"...
## $ longitude     <chr> "79.7758", "72.7811", "87.7289", "84.4341", "85....
## $ `woe-name`    <chr> "Puducherry", "Lakshadweep", "West Bengal", "Ori...
## $ latitude      <chr> "10.9224", "11.2249", "23.0523", "20.625", "25.6...
## $ `woe-label`   <chr> "Puducherry, IN, India", "Lakshadweep, IN, India...
## $ type          <chr> "Union Territor", "Union Territor", "State", "St...
#population state wise
pop = as.data.frame(c(84673556, 1382611, 31169272, 103804637, 1055450, 25540196, 342853, 242911, 18980000, 1457723, 60383628, 25353081, 6864602,
12548926, 32966238, 61130704, 33387677, 64429, 72597565, 112372972, 2721756, 2964007, 1091014, 1980602, 41947358, 1244464,
27704236, 68621012, 607688, 72138958, 3671032, 207281477, 10116752,91347736))

state= mapdata%>%
  select(`hc-a2`)%>%
  arrange(`hc-a2`)

State_pop = as.data.frame(c(state, pop))
names(State_pop)= c("State", "Population")

hcmap("https://code.highcharts.com/mapdata/countries/in/in-all.js", data = State_pop, value = "Population",
      joinBy = c("hc-a2", "State"), name = "Fake data",
      dataLabels = list(enabled = TRUE, format = '{point.name}'),
      borderColor = "#FAFAFA", borderWidth = 0.1,
      tooltip = list(valueDecimals = 0))
highmap 2

मैप्स और कोरॉप्लैथ्स में hc_add_series के साथ कुछ प्रयोग करें। कुछ विवरण और उदाहरणों के लिए यहां जाएं।

प्लगइन्स

अब highcharter द्वारा दिए गए कुछ प्लगइन्स आज़माते हैं, जैसे ग्रुपिंग, ड्रिल-डाउन, डाउनलोडिंग, डेटा प्रिंट करना और कुछ शानदार थीम्स।

चलिए mpg डेटासेट के डेटा को ग्रुप करते हैं, यहां बेहतर विज़ुअलाइज़ेशन के लिए हमने एक सूची बनाई है जो निर्माता के अनुसार डेटा को वर्गीकृत करती है।

data(mpg, package = "ggplot2")

mpgg <- mpg %>%
  filter(class %in% c("suv", "compact", "midsize")) %>%
  group_by(class, manufacturer) %>%
  summarize(count = n())

categories_grouped <- mpgg %>%
  group_by(name = class) %>%
  do(categories = .$manufacturer) %>%
  list_parse()

highchart() %>%
  hc_xAxis(categories = categories_grouped) %>%
  hc_add_series(data = mpgg, type = "bar", hcaes(y = count, color = manufacturer),
                showInLegend = FALSE)
chart

आइए एक चार्ट बनाते हैं जो बेहतर विश्लेषण के लिए दूसरे चार्ट में ड्रिल डाउन करता है। यदि आप 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
      )
    )
  )
chart 2

आइए अन्य चार्ट्स पर ड्रिल डाउन लागू करते हैं।

tm <- pokemon %>%
  mutate(type_2 = ifelse(is.na(type_2), paste("only", type_1), type_2),
         type_1 = type_1) %>%
  group_by(type_1, type_2) %>%
  summarise(n = n()) %>%
  ungroup() %>%
  treemap::treemap(index = c("type_1", "type_2"),
                   vSize = "n", vColor = "type_1")
.chart 3
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")
chart 4

चलिए डेटा एक्सपोर्ट करने की फ़ंक्शनैलिटी जोड़ते हैं।

pokemon%>%
  count(type_1)%>%
  arrange(n)%>%
  hchart(type = "bar", hcaes(x = type_1, y = n, color = type_1))%>%
  hc_exporting(enabled = TRUE)
chart 5 अंत में, हम कुछ थीम्स जोड़ते हैं।
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())
chart 6

आप यहां से बहुत कुछ सीख सकते हैं, यह 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}")))
chart 7

यदि आप R में डेटा विज़ुअलाइज़ेशन के बारे में और सीखना चाहते हैं, तो DataCamp का Data Visualization with ggplot2 (Part 1) कोर्स लें और हमारा R Formula Tutorial भी देखें।

विषय
डेटा विज़ुअलाइज़ेशन
डेटा साइंस
R

R और डेटा विज़ुअलाइज़ेशन के बारे में और जानें

{count, plural, one {कोर्स} other {कोर्स}}

ggplot2 के साथ डेटा विज़ुअलाइज़ेशन परिचय

{hours} घंटा
190.5K
ggplot2 से अर्थपूर्ण और सुंदर डेटा विज़ुअलाइज़ेशन बनाना सीखें, ग्राफ़िक्स की व्याकरण समझकर।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

{count, plural, one {कोर्स} other {कोर्स}}

R में plotly के साथ इंटरएक्टिव डेटा विज़ुअलाइज़ेशन

{hours} घंटा
14.7K
R में plotly का उपयोग करके इंटरैक्टिव डेटा विज़ुअलाइज़ेशन बनाना सीखें, ताकि आपकी डेटा स्टोरीटेलिंग बेहतर हो सके.

{count, plural, one {कोर्स} other {कोर्स}}

R में Visualization की Best Practices

{hours} घंटा
21.1K
सामान्य चार्ट, वैकल्पिक विज़ुअलाइज़ेशन प्रकारों और धारणा-आधारित शैली सुधारों के अवलोकन के साथ अपने डेटा को प्रभावी ढंग से प्रस्तुत करना सीखें।
और देखेंRight Arrow