leaflet ile Etkileşimli Haritalar
İşaretçiler, açılır pencereler ve karo katmanları içeren etkileşimli web haritaları oluşturun.
leaflet ile Etkileşimli Haritalar, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
leaflet'e Giriş
leaflet paketi, doğrudan R'den etkileşimli ve yakınlaştırılabilir web haritaları oluşturmak için Leaflet.js kitaplığını kullanır. Haritalar, JavaScript bilgisi gerektirmeden RStudio'nun Viewer'ında, R Markdown'da ve Shiny uygulamalarında görüntülenen HTML araçlarıdır.
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: Temel Harita Katmanları
addTiles(), varsayılan OpenStreetMap karo katmanını ekler. Uydu görüntülerine, CartoDB'ye, Esri'ye, Stamen'e veya başka bir karo sağlayıcısına geçmek için addProviderTiles(providers$ kullanın. Katman adları yerleşik providers listesinde bulunur.
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'
)
map2Açılır Pencereli addMarkers
addMarkers(lng, lat, popup), haritaya iğne işaretçileri ekler. popup bağımsız değişkeni HTML dizelerini kabul eder; böylece kalın metin, bağlantılar veya görseller ekleyebilirsiniz. label bağımsız değişkeni, tıklama olmadan üzerine gelindiğinde metin gösterir.
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(), boyutu ekran pikselleri cinsinden sabit olan daireleri görüntüler (addCircles() işlevinin aksine boyutunu yakınlaştırma düzeyine göre ölçeklendirmez). Orantılı semboller göstermek için idealdir; radius değerini bir veri değişkenine eşleyebilirsiniz.
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: Koroplet Haritalar
addPolygons(), çokgen geometrilerini doğrudan bir sf nesnesinden görüntüler. Dolgu rengi, colorNumeric() veya colorBin() palet işlevleri kullanılarak bir veri sütununa eşlenebilir. highlight seçeneği, üzerine gelindiğinde vurgulama efektleri ekler.
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 ve fitBounds
setView(lng, lat, zoom), haritayı sabit bir konum ve yakınlaştırma düzeyinde ortalar. fitBounds(lng1, lat1, lng2, lat2), coğrafi sınırlayıcı kutuya sığacak şekilde yakınlaştırmayı otomatik olarak ayarlar; bu, verilerin kapsamını önceden bilmediğiniz durumlarda kullanışlıdır.
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: Katmanları Açıp Kapatma
addLayersControl(), altlık haritaları ve üst katmanları açıp kapatmak için radyo düğmeleri ve onay kutuları içeren bir denetim ekler. Birbirini dışlayan döşeme katmanları için baseGroups, bağımsız olarak açılıp kapatılabilen veri katmanları için overlayGroups kullanın.
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 ve addLegend
addPopups(), kalıcı (her zaman görünür) açılır kutular ekler. addLegend(), bir renk paletine bağlı harita açıklaması oluşturur. Her ikisi de HTML içeriğini destekler ve CSS sınıflarıyla tamamen özelleştirilebilir.
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
)Renk Paletleri: colorNumeric ve colorBin
colorNumeric(), colorBin(), colorQuantile() ve colorFactor() işlevleri, veri değerlerini onaltılık renklere eşleyen palet işlevleri oluşturur. Sonucu fillColor parametresine, aynı paleti de addLegend() işlevine aktarın.
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'de Haritaları Güncelleme
leafletProxy('mapId'), haritanın tamamını baştan oluşturmadan bir Shiny uygulamasındaki mevcut leaflet haritasını günceller. Kullanıcı girdisine verimli şekilde yanıt vermek için bunu clearMarkers(), clearShapes() veya addMarkers() ile birlikte kullanın.
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 runTam Etkileşimli Koroplet Harita
Üretim kalitesinde bu koroplet harita; sağlayıcı döşemelerini, çokgen dolgusunu, üzerine gelindiğinde vurgulamayı, dinamik açılır kutuları, renk açıklamasını ve katman denetimlerini 25 satırdan kısa bir kodda birleştirir.
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')Kısa Kontrol
Bir Shiny uygulamasında, kullanıcı bir açılır listedeki seçimi değiştirdiğinde mevcut bir leaflet haritasındaki işaretçi konumlarını tüm haritayı yeniden oluşturmadan güncellemek istiyorsunuz. Hangi işlevi kullanmalısınız?
Özet: leaflet Paketi
Temel çıkarımlar:
leaflet() |> addTiles(), OpenStreetMap döşemeleriyle etkileşimli bir harita oluştururaddProviderTiles(providers$, diğer döşeme sağlayıcılarına geçiş yapar) - Nokta verileri için
addMarkers()/addCircleMarkers()kullanın;popupvelabelekleyin - Koroplet haritalar için
addPolygons(fillColor = ~pal(col))kullanın colorNumeric(),colorBin(),colorQuantile()palet işlevleri oluştururaddLegend()palet işlevleriyle birlikte kullanılır;addLayersControl()katmanları açıp kapatır- Verimli Shiny harita güncellemeleri için
leafletProxy()kullanılır fitBounds(), veri kapsamına otomatik olarak yakınlaştırır
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')Yapay zeka eğitmeniyle R öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 43
- Dersler
- 159
Sıkça Sorulan Sorular
“leaflet ile Etkileşimli Haritalar” dersi ücretsiz mi?
Evet — “leaflet ile Etkileşimli Haritalar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“leaflet ile Etkileşimli Haritalar” dersinde ne öğreneceğim?
İşaretçiler, açılır pencereler ve karo katmanları içeren etkileşimli web haritaları oluşturun. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“leaflet ile Etkileşimli Haritalar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- sf Paketiyle Basit Öznitelikler
- Koordinat Referans Sistemleri ve İzdüşümler
- Uzamsal Birleştirmeler ve İşlemler
- leaflet ile Etkileşimli Haritalar