खोज…


परिचय

भौगोलिक डेटा के लिए I / O भी देखें

पैकेज मैप्स से मैप के साथ बेसिक मैप-मेकिंग

पैकेज maps से फ़ंक्शन map() आर के साथ नक्शे बनाने के लिए एक सरल प्रारंभिक बिंदु प्रदान करता है।

एक बुनियादी विश्व मानचित्र निम्नानुसार तैयार किया जा सकता है:

require(maps)
map()

यहाँ छवि विवरण दर्ज करें

किसी रंग के वर्ण नाम या हेक्स मान या तो रंग पैरामीटर, col को सेट करके रूपरेखा का रंग बदला जा सकता है:

require(maps)
map(col = "cornflowerblue")

यहाँ छवि विवरण दर्ज करें

col में रंग के साथ भूमि द्रव्यमान भरने के लिए हम fill = TRUE सकते हैं fill = TRUE :

require(maps)
map(fill = TRUE, col = c("cornflowerblue"))

यहाँ छवि विवरण दर्ज करें

किसी भी लम्बाई के एक वेक्टर के लिए आपूर्ति की जा सकती col जब fill = TRUE भी सेट किया गया है:

require(maps)
map(fill = TRUE, col = c("cornflowerblue", "limegreen", "hotpink"))

यहाँ छवि विवरण दर्ज करें

उदाहरण में, col से रंगों को क्षेत्रों के प्रतिनिधित्व वाले नक्शे में बहुभुज को मनमाने ढंग से सौंपा गया है और यदि पॉलीगॉन की तुलना में कम रंग हैं तो रंगों को पुनर्नवीनीकरण किया जाता है।

हम एक सांख्यिकीय चर का प्रतिनिधित्व करने के लिए रंग कोडिंग का भी उपयोग कर सकते हैं, जिसे वैकल्पिक रूप से एक किंवदंती में वर्णित किया जा सकता है। इस तरह बनाया गया एक मानचित्र "कोरोप्लेथ" के रूप में जाना जाता है।

निम्नलिखित choropleth उदाहरण सेट के पहले तर्क map() , जो कि database के लिए "county" और "state" रंग कोड बेरोजगारी के लिए अंतर्निहित डेटासेट से डेटा का उपयोग कर unemp और county.fips जबकि सफेद में राज्य लाइनों डालने:

require(maps)
if(require(mapproj)) {    # mapproj is used for  projection="polyconic"
  # color US county map by 2009 unemployment rate
  # match counties to map using FIPS county codes
  # Based on J's solution to the "Choropleth Challenge"
  # Code improvements by Hack-R (hack-r.github.io)
  
  # load data
  # unemp includes data for some counties not on the "lower 48 states" county
  # map, such as those in Alaska, Hawaii, Puerto Rico, and some tiny Virginia
  #  cities
  data(unemp)
  data(county.fips)
  
  # define color buckets
  colors = c("paleturquoise", "skyblue", "cornflowerblue", "blueviolet", "hotpink", "darkgrey")
  unemp$colorBuckets <- as.numeric(cut(unemp$unemp, c(0, 2, 4, 6, 8, 10, 100)))
  leg.txt <- c("<2%", "2-4%", "4-6%", "6-8%", "8-10%", ">10%")
  
  # align data with map definitions by (partial) matching state,county
  # names, which include multiple polygons for some counties
  cnty.fips <- county.fips$fips[match(map("county", plot=FALSE)$names,
                                      county.fips$polyname)]
  colorsmatched <- unemp$colorBuckets[match(cnty.fips, unemp$fips)]
  
  # draw map
  par(mar=c(1, 1, 2, 1) + 0.1)
  map("county", col = colors[colorsmatched], fill = TRUE, resolution = 0,
      lty = 0, projection = "polyconic")
  map("state", col = "white", fill = FALSE, add = TRUE, lty = 1, lwd = 0.1,
      projection="polyconic")
  title("unemployment by county, 2009")
  legend("topright", leg.txt, horiz = TRUE, fill = colors, cex=0.6)
}

यहाँ छवि विवरण दर्ज करें

Google विज़ के साथ 50 स्टेट मैप्स और एडवांस्ड चोरोप्लेथ्स

एक सामान्य सवाल है कि एक ही नक्शे पर भौतिक रूप से अलग-अलग भौगोलिक क्षेत्रों को कैसे संयोजित किया जाए (जैसे कि सभी 50 अमेरिकी राज्यों (अलास्का और हवाई के साथ मुख्य भूमि का रसपान किया गया) का वर्णन करने वाले कोरोप्लेथ के मामले में।

Google मानचित्र का लाभ उठाते समय एक आकर्षक 50 राज्य मानचित्र बनाना सरल है। Google के API में इंटरफेस में पैकेज googleVis , ggmap और RgoogleMaps

require(googleVis)

G4 <- gvisGeoChart(CityPopularity, locationvar='City', colorvar='Popularity',
                   options=list(region='US', height=350, 
                                displayMode='markers',
                                colorAxis="{values:[200,400,600,800],
                                 colors:[\'red', \'pink\', \'orange',\'green']}")
) 
plot(G4)

choropleth

समारोह gvisGeoChart() अब तक कम जैसे बड़े मानचित्रण विधियों, की तुलना में एक choropleth बनाने के लिए कोडिंग की आवश्यकता map() पैकेज से mapscolorvar पैरामीटर एक स्तर द्वारा निर्दिष्ट पर, एक सांख्यिकीय चर का आसान रंग की अनुमति देता है locationvar पैरामीटर। के लिए पारित विभिन्न विकल्पों options एक सूची के रूप में इस तरह के आकार (के रूप में नक्शे के विवरण के अनुकूलन के लिए अनुमति देते height ), आकृति ( markers ), और रंग कोडिंग ( colorAxis और colors )।

इंटरएक्टिव प्लॉटली मैप्स

plotly पैकेज नक्शे सहित कई तरह के इंटरएक्टिव प्लॉट की अनुमति देता है। plotly में नक्शा बनाने के कुछ तरीके हैं। या तो मैप डेटा की आपूर्ति स्वयं करें ( plot_ly() या ggplotly() माध्यम से), प्लॉटली की "मूल" मैपिंग क्षमताओं ( plot_geo() या plot_mapbox() ), या यहां तक कि दोनों के संयोजन का उपयोग करें। स्वयं मानचित्र की आपूर्ति का एक उदाहरण होगा:

library(plotly)
map_data("county") %>%
    group_by(group) %>%
    plot_ly(x = ~long, y = ~lat) %>%
    add_polygons() %>%
    layout(
        xaxis = list(title = "", showgrid = FALSE, showticklabels = FALSE),
        yaxis = list(title = "", showgrid = FALSE, showticklabels = FALSE)
    )

यहाँ छवि विवरण दर्ज करें

दोनों दृष्टिकोण, स्वैप का एक संयोजन के लिए plot_ly() के लिए plot_geo() या plot_mapbox() ऊपर के उदाहरण में। अधिक उदाहरणों के लिए प्लॉटली बुक देखें।

अगला उदाहरण एक "कड़ाई से देशी" दृष्टिकोण है जो लेआउट.इगो विशेषता का लाभ उठाता है जो मानचित्र के सौंदर्यशास्त्र और ज़ूम स्तर को निर्धारित करता है। यह ब्राज़ील के शहरों को फ़िल्टर करने और "देशी" मैप के शीर्ष पर उन्हें प्लॉट करने के लिए maps से डेटाबेस world.cities का उपयोग करता है।

मुख्य चर: poph शहर और इसकी आबादी के साथ एक पाठ है (जो माउस होवर पर दिखाया गया है); q जनसंख्या की मात्रा से एक आदेशित कारक है। ge में नक्शे के लेआउट के लिए जानकारी है। अधिक जानकारी के लिए पैकेज प्रलेखन देखें।

library(maps)
dfb <- world.cities[world.cities$country.etc=="Brazil",]
library(plotly)
dfb$poph <- paste(dfb$name, "Pop", round(dfb$pop/1e6,2), " millions")
dfb$q <- with(dfb, cut(pop, quantile(pop), include.lowest = T))
levels(dfb$q) <- paste(c("1st", "2nd", "3rd", "4th"), "Quantile")
dfb$q <- as.ordered(dfb$q)

ge <- list(
  scope = 'south america',
  showland = TRUE,
  landcolor = toRGB("gray85"),
  subunitwidth = 1,
  countrywidth = 1,
  subunitcolor = toRGB("white"),
  countrycolor = toRGB("white")
)

plot_geo(dfb, lon = ~long, lat = ~lat, text = ~poph,
    marker = ~list(size = sqrt(pop/10000) + 1, line = list(width = 0)),
    color = ~q, locationmode = 'country names') %>%
layout(geo = ge, title = 'Populations<br>(Click legend to toggle)')

यह एक स्नैपशॉट है

कैटलॉग के साथ गतिशील HTML मैप बनाना

USC वेब के लिए गतिशील मानचित्र बनाने के लिए एक ओपन-सोर्स जावास्क्रिप्ट लाइब्रेरी है। RStudio पत्रक के लिए R बाइंडिंग, इसके माध्यम से उपलब्ध लिखा leaflet पैकेज , के साथ बनाया गया htmlwidgetsकैटलॉग मानचित्र आरएमार्कडाउन और चमकदार पारिस्थितिकी प्रणालियों के साथ अच्छी तरह से एकीकृत होते हैं।

एक नक्शा और बाद के कार्यों को जोड़ने (या हटाने) नक्शा परतों को शुरू करने के लिए एक leaflet() फ़ंक्शन का उपयोग करके इंटरफ़ेस को पाइप किया गया है । कोरोप्लेथ मैप बनाने के लिए पॉपअप के साथ मार्कर से लेकर पॉलीगॉन तक कई तरह की परतें उपलब्ध हैं। डेटा leaflet() में वेरिएबल्स को leaflet() पारित कर दिया जाता है जो फ़ंक्शन-शैली ~ उद्धरण के माध्यम से एक्सेस किया जाता है।

state.name और state.center डेटासेट को मैप करने के लिए:

library(leaflet)

data.frame(state.name, state.center) %>% 
    leaflet() %>% 
    addProviderTiles('Stamen.Watercolor') %>% 
    addMarkers(lng = ~x, lat = ~y, 
               popup = ~state.name, 
               clusterOptions = markerClusterOptions())
पत्रक पुस्तिका का स्क्रीनशॉट (स्क्रीनशॉट; डायनामिक संस्करण के लिए क्लिक करें।)

शाइनी अनुप्रयोगों में डायनामिक कैटलॉग मानचित्र

पत्रक पैकेज बनाया गया है शाइनी के साथ integerate

Ui में आप फोन leafletOutput() और सर्वर में आप कॉल renderLeaflet()

library(shiny)
library(leaflet)

ui <- fluidPage(
    leafletOutput("my_leaf")
)

server <- function(input, output, session){
    
    output$my_leaf <- renderLeaflet({
        
        leaflet() %>%
            addProviderTiles('Hydda.Full') %>%
            setView(lat = -37.8, lng = 144.8, zoom = 10)
        
    })
    
}

shinyApp(ui, server)

हालाँकि, प्रतिक्रियाशील इनपुट जो renderLeaflet अभिव्यक्ति को प्रभावित करते हैं, जब प्रतिक्रियाशील तत्व को अपडेट किया जाता है तो हर बार पूरे नक्शे को फिर से तैयार किया जाएगा।

इसलिए, पहले से चल रहे नक्शे को संशोधित करने के लिए आपको leafletProxy() फ़ंक्शन का उपयोग करना चाहिए।

आम तौर पर आप नक्शे के स्थिर पहलुओं को बनाने के लिए leaflet का उपयोग करते हैं, और leafletProxy को गतिशील तत्वों को प्रबंधित करने के लिए, उदाहरण के लिए:

library(shiny)
library(leaflet)

ui <- fluidPage(
    sliderInput(inputId = "slider", 
                label = "values",
                min = 0,
                max = 100,
                value = 0,
                step = 1),
    leafletOutput("my_leaf")
)

server <- function(input, output, session){
    set.seed(123456)
    df <- data.frame(latitude = sample(seq(-38.5, -37.5, by = 0.01), 100),
                     longitude = sample(seq(144.0, 145.0, by = 0.01), 100),
                     value = seq(1,100))
        
    ## create static element
    output$my_leaf <- renderLeaflet({
        
        leaflet() %>%
            addProviderTiles('Hydda.Full') %>%
            setView(lat = -37.8, lng = 144.8, zoom = 8)
        
    })
    
    ## filter data
    df_filtered <- reactive({
        df[df$value >= input$slider, ]
    })
    
    ## respond to the filtered data
    observe({

        leafletProxy(mapId = "my_leaf", data = df_filtered()) %>%
            clearMarkers() %>%   ## clear previous markers
            addMarkers()
    })
    
}

shinyApp(ui, server)

यहाँ छवि विवरण दर्ज करें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow