2017-08-15 1 views
1

Ich versuche, eine Karte mit Leaflet mit glänzend zu erstellen, aber mein Code ändert nicht die Prospektkarte entsprechend der ausgewählten Eingabe. Kann jemand diesen Code unten reagieren lassen, um die Auswahleingabe zu machen? Ich habe versucht, es mit get-Funktion zu tun, konnte aber nicht erfolgreich sein. Jede Hilfe würde sehr geschätzt werden!Wählen Sie die Eingabe für Leaflet in Shiny

Hier ist meine Daten:

> datamap 
     Country.code EVENTONE EVENTTWO EVENTTHREE 
1 Bosnia and Herzegovina  11  1   5 
2    South Korea  1  4   4 
3    Philippines  1  5   6 
4    Indonesia  1  6   8 
5    Thailand  1  0   9 
6    Mongolia  1  0   3 
7  Russian Federation  1  0   4 
8     Ukraine  1  0   8 
9    Slovenia  1  0   5 
10    Mongolia  1  0   0 
11    Pakistan  1  0   0 
12    Bangladesh  1  0   0 

Und hier ist mein Code:

library(shiny) 
library(rworldmap) 
library(ggplot2) 



shinyUI(fluidPage( 
    fluidRow(h1("Events in the World", align = "center")), 
    fluidRow(
    column(2, 

     selectInput("var", "Choose the Type Event:", 
        choices=c("Event One" = "EVENTONE", 
          "Event Two" = "EVETNTWO", 
          "Event Three" = "EVENTTHREE")) 

), 

column(10, 

     tabsetPanel(
     tabPanel("Map View", leafletOutput("TheMap", width = "100%") 
     ) 

     ) #end tabset panel 
    ) 
) 
)) 

shinyServer(function(input, output) { 

    datamap <- read.csv(".../Documents/R Directory/App-4/mapexcel4CSV.csv",    
        stringsAsFactors=FALSE, header=TRUE) 
    sPDF <- joinCountryData2Map(datamap, joinCode='NAME',  
          nameJoinColumn='Country.code') 
    sPDF <- sPDF[sPDF$ADMIN!='Antarctica',] 

    output$TheMap <- renderLeaflet({ 
    mapselect <- get(input$var) 
    pal <- colorBin("YlOrRd", domain = mapselect) 
    labels <- sprintf(
    "<strong>%s</strong><br/>Number of events: %g</sup>", 
    sPDF$NAME, sPDF$mapselect 
) %>% lapply(htmltools::HTML) 

    TheMap<- leaflet(data = sPDF) %>% addTiles() %>% addPolygons(stroke = FALSE) %>% addPolygons(
    fillColor = ~pal(mapselect), 
    weight = 2, 
    opacity = 1, 
    color = "white", 
    dashArray = "3", 
    fillOpacity = 0.7, 
    highlight = highlightOptions(
    weight = 5, 
    color = "#666", 
    dashArray = "", 
    fillOpacity = 0.7, 
    bringToFront = TRUE), 
    label = labels, 
    labelOptions = labelOptions(
    style = list("font-weight" = "normal", padding = "3px 8px"), 
    textsize = "15px", 
    direction = "auto")) 
    } 
) 
}) 
shinyApp(ui = ui, server = server) 

Jede Hilfe wird sehr geschätzt!

Antwort

0

Ich denke, das ist das, was Sie anstreben:

library(shiny) 
    library(rworldmap) 
    library(ggplot2) 
    library(leaflet) 



ui <- shinyUI(fluidPage( 
    fluidRow(h1("Events in the World", align = "center")), 
    fluidRow(
     column(2, 

      selectInput("var", "Choose the Type Event:", 
         choices=c("Event One" = "EVENTONE", 
            "Event Two" = "EVENTTWO", 
            "Event Three" = "EVENTTHREE")) 

    ), 

     column(10, 

      tabsetPanel(
       tabPanel("Map View", leafletOutput("TheMap", width = "100%") 
       ) 

      ) #end tabset panel 
    ) 
    ) 
)) 

    server <- shinyServer(function(input, output) { 

    datamap <- read.csv("E:/test.csv",    
         stringsAsFactors=FALSE, header=TRUE) 
    sPDF <- joinCountryData2Map(datamap, joinCode='NAME',  
           nameJoinColumn='Country.code') 
    sPDF <- sPDF[sPDF$ADMIN!='Antarctica',] 
    legVal <- c(min(datamap[,-1]), max(datamap[,-1])) 
    output$TheMap <- renderLeaflet({ 
     mapselect <- input$var 
     pal <- colorBin("YlOrRd", domain = as.numeric(sPDF[[mapselect]])) 
     labels <- sprintf(
     "<strong>%s</strong><br/>Number of events: %g</sup>", 
     sPDF$NAME, sPDF[[mapselect]] 
    ) %>% lapply(htmltools::HTML) 

     TheMap<- leaflet(data = sPDF) %>% addTiles() %>% addPolygons(stroke = FALSE) %>% addPolygons(
     fillColor = ~pal(as.numeric(sPDF[[mapselect]])), 
     weight = 2, 
     opacity = 1, 
     color = "white", 
     dashArray = "3", 
     fillOpacity = 0.7, 
     highlight = highlightOptions(
      weight = 5, 
      color = "#666", 
      dashArray = "", 
      fillOpacity = 0.7, 
      bringToFront = TRUE), 
     label = labels, 
     labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"), 
      textsize = "15px", 
      direction = "auto"))%>% addLegend("bottomleft", pal = pal, value = legVal) 
    } 
    ) 
    }) 
    shinyApp(ui = ui, server = server) 

Hoffe, es hilft!

Verwandte Themen