R Academy · पाठ

leaflet से इंटरैक्टिव मानचित्र

मार्कर, पॉपअप और टाइल परतों वाले इंटरैक्टिव वेब मानचित्र रेंडर करें।

पाठ 4, कुल 4 में से13 चरण

leaflet से इंटरैक्टिव मानचित्र, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

leaflet का परिचय

leaflet पैकेज Leaflet.js लाइब्रेरी का उपयोग करके सीधे R से इंटरैक्टिव और ज़ूम किए जा सकने वाले वेब मानचित्र बनाता है। मानचित्र HTML विजेट होते हैं, जो RStudio के Viewer, R Markdown और Shiny ऐप में बिना किसी JavaScript ज्ञान के प्रदर्शित होते हैं।

library(leaflet)

# Minimal leaflet map: tiles + one marker
leaflet() |>
  addTiles() |>         # OpenStreetMap base layer
  setView(
    lng  = -74.006,
    lat  =  40.713,
    zoom = 12
  ) |>
  addMarkers(
    lng   = -74.006,
    lat   =  40.713,
    popup = '<b>New York City</b>'
  )

addTiles: आधार मानचित्र लेयर

addTiles() डिफ़ॉल्ट OpenStreetMap टाइल लेयर जोड़ता है। सैटेलाइट चित्र, CartoDB, Esri, Stamen या किसी अन्य टाइल प्रदाता पर स्विच करने के लिए addProviderTiles(providers$) का उपयोग करें। लेयर के नाम अंतर्निहित providers सूची में होते हैं।

library(leaflet)

# Default OpenStreetMap
map1 <- leaflet() |> addTiles()

# CartoDB light theme (great for data overlay)
map2 <- leaflet() |>
  addProviderTiles(providers$CartoDB.Positron)

# Satellite imagery
map3 <- leaflet() |>
  addProviderTiles(providers$Esri.WorldImagery)

# Custom tile URL
custom <- leaflet() |>
  addTiles(
    urlTemplate = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
    attribution  = '(c) OpenStreetMap contributors'
  )

map2

पॉप-अप के साथ addMarkers

addMarkers(lng, lat, popup) मानचित्र पर पिन मार्कर जोड़ता है। popup आर्ग्युमेंट HTML स्ट्रिंग स्वीकार करता है, इसलिए आप बोल्ड टेक्स्ट, लिंक या चित्र शामिल कर सकते हैं। label आर्ग्युमेंट क्लिक किए बिना होवर करने पर टेक्स्ट दिखाता है।

library(leaflet)

cities <- data.frame(
  name = c('New York', 'Los Angeles', 'Chicago'),
  lon  = c(-74.006, -118.244, -87.629),
  lat  = c( 40.713,   34.052,  41.878),
  pop  = c(8336817,  3979576, 2693976)
)

leaflet(cities) |>
  addTiles() |>
  addMarkers(
    lng   = ~lon,
    lat   = ~lat,
    popup = ~paste0(
      '<b>', name, '</b><br>',
      'Population: ', format(pop, big.mark = ',')
    ),
    label = ~name
  )

addCircleMarkers

addCircleMarkers() ऐसे वृत्त बनाता है जिनका आकार स्क्रीन के पिक्सेल में स्थिर रहता है (addCircles() के विपरीत, जिसका आकार ज़ूम के साथ बदलता है)। ये अनुपातिक संकेतों को दर्शाने के लिए आदर्श हैं—radius को किसी डेटा चर से मैप करें।

library(leaflet)

cities <- data.frame(
  name = c('New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'),
  lon  = c(-74.006, -118.244, -87.629, -95.369, -112.074),
  lat  = c( 40.713,   34.052,  41.878,  29.760,   33.449),
  pop  = c(8336817,  3979576, 2693976, 2304580, 1608139)
)

leaflet(cities) |>
  addProviderTiles(providers$CartoDB.Positron) |>
  addCircleMarkers(
    lng    = ~lon,
    lat    = ~lat,
    radius = ~sqrt(pop / 50000),
    color  = 'steelblue',
    fill   = TRUE,
    fillOpacity = 0.6,
    popup  = ~paste0(name, ': ', format(pop, big.mark = ','))
  )

addPolygons: कोरोप्लेथ मानचित्र

addPolygons() किसी sf ऑब्जेक्ट से बहुभुज ज्यामितियों को सीधे प्रदर्शित करता है। भरण रंग को colorNumeric() या colorBin() पैलेट फ़ंक्शन का उपयोग करके किसी डेटा कॉलम से मैप किया जा सकता है। highlight विकल्प माउस ले जाने पर प्रभाव जोड़ता है।

library(leaflet)
library(sf)

nc <- st_transform(
  read_sf(system.file('shape/nc.shp', package = 'sf')), 4326
)

# Colour palette based on birth count
pal <- colorNumeric('YlOrRd', domain = nc$BIR74)

leaflet(nc) |>
  addProviderTiles(providers$CartoDB.Positron) |>
  addPolygons(
    fillColor   = ~pal(BIR74),
    fillOpacity = 0.7,
    color       = 'white',
    weight      = 1,
    popup       = ~paste0('<b>', NAME, '</b><br>Births 1974: ', BIR74),
    highlight   = highlightOptions(
      weight    = 3,
      color     = '#333',
      bringToFront = TRUE
    )
  ) |>
  addLegend('bottomright', pal = pal, values = ~BIR74, title = 'Births 1974')

setView और fitBounds

setView(lng, lat, zoom) मानचित्र को किसी निश्चित स्थान और ज़ूम स्तर पर केंद्रित करता है। fitBounds(lng1, lat1, lng2, lat2) भौगोलिक सीमाबद्ध बॉक्स में फ़िट होने के लिए ज़ूम को अपने-आप समायोजित करता है, जो तब उपयोगी है जब आपको पहले से डेटा का विस्तार ज्ञात न हो।

library(leaflet)
library(sf)

nc <- st_transform(
  read_sf(system.file('shape/nc.shp', package = 'sf')), 4326
)
bbox <- st_bbox(nc)

# fitBounds: auto-zoom to data extent
leaflet() |>
  addTiles() |>
  fitBounds(
    lng1 = bbox['xmin'], lat1 = bbox['ymin'],
    lng2 = bbox['xmax'], lat2 = bbox['ymax']
  ) |>
  addPolygons(
    data        = nc,
    fillColor   = 'lightblue',
    fillOpacity = 0.4,
    color       = 'steelblue',
    weight      = 1
  )

addLayersControl: परतों को टॉगल करना

addLayersControl() आधार मानचित्रों और ओवरले परतों को चालू या बंद करने के लिए रेडियो/चेकबॉक्स नियंत्रण जोड़ता है। परस्पर अनन्य टाइल परतों के लिए baseGroups और स्वतंत्र रूप से टॉगल की जा सकने वाली डेटा परतों के लिए overlayGroups का उपयोग करें।

library(leaflet)
library(sf)

nc <- st_transform(
  read_sf(system.file('shape/nc.shp', package = 'sf')), 4326
)

high_birth  <- nc[nc$BIR74 > 3000, ]
low_birth   <- nc[nc$BIR74 <= 3000, ]

leaflet() |>
  addProviderTiles(providers$CartoDB.Positron, group = 'Light') |>
  addProviderTiles(providers$Esri.WorldImagery, group = 'Satellite') |>
  addPolygons(data = high_birth, color = 'red',   group = 'High Births (>3000)') |>
  addPolygons(data = low_birth,  color = 'blue',  group = 'Low Births (<=3000)') |>
  addLayersControl(
    baseGroups    = c('Light', 'Satellite'),
    overlayGroups = c('High Births (>3000)', 'Low Births (<=3000)'),
    options       = layersControlOptions(collapsed = FALSE)
  )

addPopups और addLegend

addPopups() स्थायी (हमेशा दिखाई देने वाले) पॉपअप बॉक्स जोड़ता है। addLegend() किसी रंग पैलेट से जुड़ी मानचित्र कुंजी बनाता है। दोनों HTML सामग्री का समर्थन करते हैं और CSS classes की सहायता से पूरी तरह अनुकूलित किए जा सकते हैं।

library(leaflet)

leaflet() |>
  addTiles() |>
  setView(-79.0, 35.5, zoom = 7) |>
  addPopups(
    lng     = -78.639,
    lat     =  35.779,
    popup   = '<b>Raleigh</b><br>State Capital of NC'
  ) |>
  addLegend(
    position = 'bottomleft',
    colors   = c('red', 'blue', 'green'),
    labels   = c('High', 'Medium', 'Low'),
    title    = 'Risk Level',
    opacity  = 0.8
  )

रंग पैलेट: colorNumeric और colorBin

colorNumeric(), colorBin(), colorQuantile() और colorFactor() फ़ंक्शन ऐसे पैलेट फ़ंक्शन बनाते हैं जो डेटा मानों को हेक्स रंगों से मैप करते हैं। परिणाम को fillColor में दें और उसी पैलेट को addLegend() में दें।

library(leaflet)
library(sf)

nc <- st_transform(
  read_sf(system.file('shape/nc.shp', package = 'sf')), 4326
)

# Continuous palette
pal_num <- colorNumeric('Blues', domain = nc$BIR74)

# Binned palette (5 equal bins)
pal_bin <- colorBin('RdYlGn', domain = nc$BIR74, bins = 5)

# Quantile palette (equal number of features per class)
pal_qtl <- colorQuantile('YlOrRd', domain = nc$BIR74, n = 4)

# Use binned palette
leaflet(nc) |>
  addTiles() |>
  addPolygons(
    fillColor   = ~pal_bin(BIR74),
    fillOpacity = 0.7, weight = 1, color = 'white'
  ) |>
  addLegend('bottomright', pal = pal_bin, values = ~BIR74,
            title = 'Births 1974 (5 bins)')

leafletProxy: Shiny में मानचित्र अपडेट करना

leafletProxy('mapId') पूरे मानचित्र को नए सिरे से प्रदर्शित किए बिना Shiny ऐप में मौजूदा leaflet मानचित्र को अपडेट करता है। उपयोगकर्ता के इनपुट पर कुशलतापूर्वक प्रतिक्रिया देने के लिए इसे clearMarkers(), clearShapes() या addMarkers() के साथ उपयोग करें।

library(shiny)
library(leaflet)

# Minimal Shiny app with leafletProxy
ui <- fluidPage(
  selectInput('colour', 'Marker colour:', choices = c('red', 'blue', 'green')),
  leafletOutput('map')
)

server <- function(input, output, session) {
  output$map <- renderLeaflet({
    leaflet() |> addTiles() |>
      setView(-79.0, 35.5, zoom = 7)
  })

  observeEvent(input$colour, {
    leafletProxy('map') |>
      clearMarkers() |>
      addCircleMarkers(
        lng   = -78.639, lat = 35.779,
        color = input$colour,
        label = paste('Raleigh -', input$colour)
      )
  })
}

# shinyApp(ui, server)  # uncomment to run

पूर्ण इंटरैक्टिव कोरोप्लेथ

यहाँ सभी प्रमुख सुविधाओं को मिलाकर बनाया गया उत्पादन-स्तर का कोरोप्लेथ है: प्रदाता टाइलें, बहुभुज भरण, माउस ले जाने पर उभरने वाले हाइलाइट, गतिशील पॉपअप, रंग कुंजी और परत नियंत्रण—सब कुछ 25 से कम पंक्तियों में।

library(leaflet)
library(sf)

nc <- st_transform(
  read_sf(system.file('shape/nc.shp', package = 'sf')), 4326
)
pal <- colorQuantile('YlOrRd', domain = nc$SID74, n = 5)

leaflet(nc) |>
  addProviderTiles(providers$CartoDB.Positron) |>
  addPolygons(
    fillColor   = ~pal(SID74),
    fillOpacity = 0.75,
    color       = 'white',
    weight      = 0.5,
    popup       = ~paste0('<b>', NAME, '</b><br>SIDS 1974: ', SID74),
    highlight   = highlightOptions(
      weight = 2, color = '#555', bringToFront = TRUE
    )
  ) |>
  addLegend(
    position = 'bottomright',
    pal = pal, values = ~SID74,
    title = 'SIDS Deaths 1974<br>(Quintiles)'
  ) |>
  addControl('<b>NC SIDS Data 1974</b>', position = 'topright')

त्वरित जाँच

Shiny ऐप में, उपयोगकर्ता द्वारा ड्रॉपडाउन बदलने पर आप मौजूदा leaflet मानचित्र पर मार्कर के स्थान अपडेट करना चाहते हैं—पूरे मानचित्र को फिर से प्रदर्शित किए बिना। आपको किस फ़ंक्शन का उपयोग करना चाहिए?

पुनरावलोकन: leaflet पैकेज

मुख्य बातें:

  • leaflet() |> addTiles() OpenStreetMap टाइलों वाला इंटरैक्टिव मानचित्र बनाता है
  • addProviderTiles(providers$) अन्य टाइल प्रदाताओं पर स्विच करता है
  • बिंदु डेटा के लिए addMarkers() / addCircleMarkers(); popup और label का उपयोग करें
  • कोरोप्लेथ मानचित्रों के लिए addPolygons(fillColor = ~pal(col))
  • colorNumeric(), colorBin(), colorQuantile() पैलेट फ़ंक्शन बनाते हैं
  • addLegend() पैलेट फ़ंक्शन के साथ काम करता है; addLayersControl() परतों को टॉगल करता है
  • Shiny मानचित्रों के कुशल अपडेट के लिए leafletProxy()
  • fitBounds() डेटा के विस्तार के अनुसार अपने-आप ज़ूम करता है
library(leaflet)

# Three-line interactive map
leaflet() |>
  addProviderTiles(providers$CartoDB.Positron) |>
  addCircleMarkers(lng = c(-74, -118, -88), lat = c(41, 34, 42),
                   label = c('NYC', 'LA', 'Chicago'), color = 'steelblue')
शुरुआत निःशुल्क

एआई शिक्षक के साथ R सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
43
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “leaflet से इंटरैक्टिव मानचित्र” पाठ निःशुल्क है?

हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “leaflet से इंटरैक्टिव मानचित्र” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“leaflet से इंटरैक्टिव मानचित्र” में मैं क्या सीखूँगा?

मार्कर, पॉपअप और टाइल परतों वाले इंटरैक्टिव वेब मानचित्र रेंडर करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“leaflet से इंटरैक्टिव मानचित्र” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. sf पैकेज से सरल फीचर
  2. निर्देशांक संदर्भ प्रणालियाँ और प्रक्षेपण
  3. स्थानिक जॉइन और संक्रियाएँ
  4. leaflet से इंटरैक्टिव मानचित्र
← R Academy पर वापस जाएँ