Programmierung einer Leaflet Shiny App zum Zeichnen von Wärmekarten

In früheren Beiträgen habe ich gezeigt, wie man in R Wärmekarten (Heatmaps) erstellt, bspw. mit deckgl, ggmap und Leaflet.

Ich habe auch einen Überblick über mehrere R-Pakete zur Visualisierung von Geodaten gegeben.

Dieser Beitrag enthält ein kurzes Codierungsbeispiel zum Programmieren einer kleinen Shiny App in R, wobei das Leaflet-Paket zur Visualisierung von Heatmaps auf Leaflet-Karten implementiert wird. Der Code hierfür lautet wie folgt:

# erforderliche Pakete laden
library(shiny)
library(leaflet)
library(leaflet.extras)
library(jsonlite)

# Graphische Benutzeroberfläche
ui <- fluidPage(
  titlePanel("This is a simple visualization Shiny-App"),
  p("Please upload your input in a csv file"),
  p("The columns must contain a) longitude, b) latitude, c) observation intensity score or count for each location"),
  fileInput(inputId="input_file",label="Please upload input data",placeholder=""),
  checkboxInput(inputId="input_header",label="Does your .csv-file have headers?",value=TRUE),
  leafletOutput(outputId = "map_result"),
  p(""),
  actionButton(inputId="input_button",label="Visualize")
)

# SERVER 
server <- function(input,output){
  output$map_result <- renderLeaflet({
    # Aktions Button
    input$input_button
    
    # Daten einlesen und bearbeiten
    isolate({
      data_file <- req(input$input_file)
      if(is.null(data)){
        return(NULL)
      }else{
        data <- read.csv(file=data_file$datapath,header=input$input_header)
      }

      # Ergebnisse visualisieren
      leaflet() %>% 
        addProviderTiles(provider=providers$Hydda) %>%
        setView(lng= mean(data[,1]), lat=mean(data[,2]), zoom=6) %>%
        addHeatmap(lng =data[,1] , lat=data[,2] , intensity=data[,3])
    })
  })
}


# APP 
shinyApp(ui=ui,
         server=server)

Die App fordert eine CSV-Datei als Datenquelle an.

Diese CSV-Datei muss Längen- und Breitengraddaten in Spalten für jeden Ort enthalten.

Außerdem muss die CSV-Datei die relevante Metrik, also die relevanten Observationswerte, enthalten. Unten sehen Sie einen beispielhaften Screenshot:

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Close

Meta