R Language                
            Einführung in geographische Karten
        
        
            
    Suche…
Einführung
Siehe auch E / A für geografische Daten
Grundlegende Kartenerstellung mit map () aus den Paketkarten
 Die Funktion map() aus den Package- maps bietet einen einfachen Ausgangspunkt zum Erstellen von Maps mit R. 
Eine grundlegende Weltkarte kann wie folgt gezeichnet werden:
require(maps)
map()
 Die Farbe der Kontur kann geändert werden, indem der Farbparameter col entweder auf den Zeichennamen oder den Hexadezimalwert einer Farbe gesetzt wird: 
require(maps)
map(col = "cornflowerblue")
 Landmassen mit der Farbe zu füllen col wir einstellen können fill = TRUE : 
require(maps)
map(fill = TRUE, col = c("cornflowerblue"))
 Ein Vektor mit beliebiger Länge kann an col wenn auch fill = TRUE gesetzt ist: 
require(maps)
map(fill = TRUE, col = c("cornflowerblue", "limegreen", "hotpink"))
 Im obigen Beispiel werden Farben aus col beliebig Polygonen in der Karte zugewiesen, die Regionen darstellen, und Farben werden wiederverwendet, wenn weniger Farben als Polygone vorhanden sind. 
Wir können die Farbkodierung auch verwenden, um eine statistische Variable darzustellen, die optional in einer Legende beschrieben werden kann. Eine als solche erstellte Karte wird als "Choroplet" bezeichnet.
 Das folgende Choropleth-Beispiel legt das erste Argument von map() , bei dem es sich bei der database um "county" und "state" , um die Arbeitslosigkeit mithilfe von Daten aus den integrierten Datensätzen unemp und county.fips während die unemp county.fips überlagert werden: 
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)
}
50 Landeskarten und erweiterte Choroplethen mit Google Viz
Eine häufig gestellte Frage ist, wie man räumlich getrennte geografische Regionen auf derselben Karte nebeneinander stellt (kombiniert), wie im Fall eines Choropleths, der alle 50 amerikanischen Staaten beschreibt (das Festland mit Alaska und Hawaii nebeneinander).
 Das Erstellen einer attraktiven Karte mit 50 Zuständen ist beim Einsatz von Google Maps einfach. Zu den Schnittstellen der Google-API gehören die Pakete googleVis , ggmap und 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)
 Die Funktion gvisGeoChart() erfordert weit weniger Codierung, um einen Choroplet zu erstellen, im Vergleich zu älteren Mapping-Methoden wie map() aus den Package- maps . Der colorvar Parameter ermöglicht das einfache Einfärben einer statistischen Variablen auf einer durch den locationvar Parameter festgelegten Ebene. Die verschiedenen Optionen übergeben options als Liste ermöglichen die Anpassung von Details der Karte wie Größe ( height ), Form ( markers ) und Farbcodierung ( colorAxis und colors ). 
Interaktive Kartenpläne
 Das Paket enthält mehrere Arten von interaktiven plotly , einschließlich Karten. Es gibt mehrere Möglichkeiten, eine Karte in plotly zu erstellen. plot_ly() Sie die Kartendaten entweder selbst an (über plot_ly() oder ggplotly() ), verwenden Sie die "native" Zuordnungsfunktion von plot_geo() über plot_geo() oder plot_mapbox() ) oder auch eine Kombination aus beiden. Ein Beispiel für die eigene Bereitstellung der Karte wäre: 
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)
    )
 Für eine Kombination beider Ansätze tauschen Sie plot_ly() für plot_geo() oder plot_mapbox() im obigen Beispiel aus. Weitere Beispiele finden Sie im ausführlichen Buch . 
 Das nächste Beispiel ist ein "streng nativer" Ansatz, bei dem das Attribut layout.geo verwendet wird, um die Ästhetik und die Zoomstufe der Karte festzulegen . Es verwendet auch die Datenbank world.cities aus maps , um die brasilianischen Städte zu filtern und sie über der "nativen" Karte zu zeichnen. 
 Die poph : poph ist ein Text mit der Stadt und ihrer Bevölkerung (was beim Mauszeiger angezeigt wird); q ist ein geordneter Faktor aus dem Quantil der Bevölkerung. ge hat Informationen für das Layout der Karten. Weitere Informationen finden Sie in der Paketdokumentation . 
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)')
Dynamische HTML-Karten mit Broschüre erstellen
 Leaflet ist eine Open-Source-JavaScript-Bibliothek zum Erstellen dynamischer Karten für das Web. RStudio schrieb R Bindungen für Leaflet, erhältlich durch sein leaflet - htmlwidgets Paket , mit eingebauter htmlwidgets . Prospektkarten lassen sich gut in die Ökosysteme RMarkdown und Shiny integrieren . 
 Die Schnittstelle wird verrohrt , mit einer leaflet() Funktion , um eine Karte und Folgefunktionen hinzuzufügen (oder zu entfernen) Kartenebenen zu initialisieren. Es gibt viele Arten von Ebenen, von Markern mit Popups bis hin zu Polygonen zum Erstellen von Choroplethenkarten. Auf Variablen, die in dem data.frame an leaflet() werden, wird über Funktionsstil ~ quotation zugegriffen. 
 So state.name state.center Datasets state.name und state.center : 
library(leaflet)
data.frame(state.name, state.center) %>% 
    leaflet() %>% 
    addProviderTiles('Stamen.Watercolor') %>% 
    addMarkers(lng = ~x, lat = ~y, 
               popup = ~state.name, 
               clusterOptions = markerClusterOptions())
 (Screenshot; klicken Sie für eine dynamische Version.)
 (Screenshot; klicken Sie für eine dynamische Version.)        Dynamische Prospektkarten in glänzenden Anwendungen
Das Merkblatt - Paket ist so ausgelegt , um mit glänzenden integerate
 Im ui rufen Sie leafletOutput() und in dem Server , den Sie anrufen 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)
 Reaktive Eingaben, die sich auf den Ausdruck renderLeaflet auswirken, renderLeaflet jedoch, dass die gesamte Map jedes Mal neu gezeichnet wird, wenn das reaktive Element aktualisiert wird. 
 Um eine Karte zu ändern, die bereits läuft, sollten Sie die Funktion leafletProxy() verwenden. 
 Normalerweise verwenden Sie leaflet , um die statischen Aspekte der Karte zu erstellen, und leafletProxy , um die dynamischen Elemente zu verwalten, zum Beispiel: 
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)








