2016-03-19 15 views
3

Bir Choropleth haritasını görüntülemek ve haritayı güncellemek için bir kaydırıcıyı kullanmak için bu repo'u değiştirmeye çalışıyorum. Kaydırıcı girişini canlandırmaya çalışana kadar her şey tamam, hiçbir şey olmuyor. Bu konsol hatası alıyorum: input_binding_slider.js: 199 Uncaught TypeError: undefined özelliği 'seçenekleri' okunamıyor.Broşür ve Parlaklıkla etkileşimli choropleth haritası

İşte
library(dplyr) ; library(rgdal) ; library(leaflet) 

gdp = read.csv("mexico2.csv", header= T) %>% 
    as.data.frame() 

mexico <- readOGR("mexico.shp", layer = "mexico", encoding = "UTF-8") 

ui <- shinyUI(fluidPage(
    fluidRow(
    column(7, offset = 1, 
      br(), 
      div(h4(textOutput("title"), align = "center"), style = "color:black"), 
      div(h5(textOutput("period"), align = "center"), style = "color:black"), 
      br())), 
    fluidRow(
    column(7, offset = 1, 
      leafletOutput("map", height="530"), 
      br(), 
      actionButton("reset_button", "Reset view")), 
    column(3, 
      uiOutput("category", align = "left"))) 
)) 

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

    output$category <- renderUI({ 
    sliderInput("category", "Year:", 
       min=1994, max = 1999, 
       value = 1994, sep = "", animate=TRUE) 
    }) 

    selected <- reactive({ 
    subset(gdp, 
      category==input$category) 
    }) 

    output$title <- renderText({ 
    req(input$category) 
    paste0(input$category, " GDP by State") 
    }) 

    output$period <- renderText({ 
    req(input$category) 
    paste("...") 
    }) 

    lat <- 23 
    lng <- -102 
    zoom <- 5 

    output$map <- renderLeaflet({ 

    leaflet() %>% 
     addProviderTiles("CartoDB.Positron") %>% 
     setView(lat = lat, lng = lng, zoom = zoom) 
    }) 

    observe({ 
    [email protected] <- left_join([email protected], selected()) 

    qpal <- colorQuantile("YlGn", mexico$value, n = 5, na.color = "#bdbdbd") 

    popup <- paste0("<strong>ID: </strong>", 
        mexico$id, 
        "<br><strong>Estado: </strong>", 
        mexico$name, 
        "<br><strong>Valor: </strong>", 
        mexico$value) 

    leafletProxy("map", data = mexico) %>% 
     addProviderTiles("CartoDB.Positron") %>% 
     clearShapes() %>% 
     clearControls() %>% 
     addPolygons(data = mexico, fillColor = ~qpal(value), fillOpacity = 0.7, 
        color = "white", weight = 2, popup = popup) %>% 
     addLegend(pal = qpal, values = ~value, opacity = 0.7, 
       position = 'bottomright', 
       title = paste0(input$category, "<br>")) 
    }) 

    observe({ 
    input$reset_button 
    leafletProxy("map") %>% setView(lat = lat, lng = lng, zoom = zoom) 
    })  

}) 

shinyApp(ui, server) 

Herhangi bir yardım aprecieted olacağını shinyapp

bağlantısıdır:

Bu

i kullanıyorum kodudur. Teşekkürler!

cevap

1

Sadece bir adlandırma hatası. "Kategori" için htmlOutputve adlarınızı sliderOutput adında adlandırdınız. İçten içe, bu işler berbat.

Sadece ör.

uiOutput("categoryOutput", align = "left") 

ve

output$categoryOutput <- renderUI({ ... }) 

ve içine çıkış gitmek iyi olmalıdır.

Düzenleme: Tam Kod

library(dplyr) ; library(rgdal) ; library(leaflet) 

gdp = read.csv("mexico2.csv", header= T) %>% 
    as.data.frame() 

mexico <- readOGR("mexico.shp", layer = "mexico", encoding = "UTF-8") 

ui <- shinyUI(fluidPage(
    fluidRow(
    column(7, offset = 1, 
      br(), 
      div(h4(textOutput("title"), align = "center"), style = "color:black"), 
      div(h5(textOutput("period"), align = "center"), style = "color:black"), 
      br())), 
    fluidRow(
    column(7, offset = 1, 
      leafletOutput("map", height="530"), 
      br(), 
      actionButton("reset_button", "Reset view")), 
    column(3, 
      uiOutput("categoryOut", align = "left"))) 
)) 

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

    output$categoryOut <- renderUI({ 
    sliderInput("category", "Year:", 
       min=1994, max = 1999, 
       value = 1994, sep = "", animate=TRUE) 
    }) 

    selected <- reactive({ 
    subset(gdp, 
      category==input$category) 
    }) 

    output$title <- renderText({ 
    req(input$category) 
    paste0(input$category, " GDP by State") 
    }) 

    output$period <- renderText({ 
    req(input$category) 
    paste("...") 
    }) 

    lat <- 23 
    lng <- -102 
    zoom <- 5 

    output$map <- renderLeaflet({ 

    leaflet() %>% 
     addProviderTiles("CartoDB.Positron") %>% 
     setView(lat = lat, lng = lng, zoom = zoom) 
    }) 

    observe({ 
    [email protected] <- left_join([email protected], selected()) 

    qpal <- colorQuantile("YlGn", mexico$value, n = 5, na.color = "#bdbdbd") 

    popup <- paste0("<strong>ID: </strong>", 
        mexico$id, 
        "<br><strong>Estado: </strong>", 
        mexico$name, 
        "<br><strong>Valor: </strong>", 
        mexico$value) 

    leafletProxy("map", data = mexico) %>% 
     addProviderTiles("CartoDB.Positron") %>% 
     clearShapes() %>% 
     clearControls() %>% 
     addPolygons(data = mexico, fillColor = ~qpal(value), fillOpacity = 0.7, 
        color = "white", weight = 2, popup = popup) %>% 
     addLegend(pal = qpal, values = ~value, opacity = 0.7, 
       position = 'bottomright', 
       title = paste0(input$category, "<br>")) 
    }) 

    observe({ 
    input$reset_button 
    leafletProxy("map") %>% setView(lat = lat, lng = lng, zoom = zoom) 
    })  

}) 

shinyApp(ui, server) 
+0

yanıt için teşekkür ederiz, ama bu işe yaramadı. Aslında, gönderimden sonra adı "yearOutput" olarak değiştirdim çünkü daha açıklayıcı olduğunu düşündüm. Ancak kaydırıcı ile ilgili sorun hala devam ediyor. – neek05

+0

Tamam, merak ediyordum, çünkü "Hata: H'nin undefined" türünü aldım, bu yüzden elinizde ne varsa ... –

+0

@ neek05 Peki, hayır. Sadece shinyserver web sitenize girdim ve hiçbir şey yapmadım, ancak kaydırıcıyı içeren divun kimliğini değiştirdim. Ve voilà, animasyon hata mesajları olmadan çalıştı. Bu ekran görüntüsüne bakın: http://imgur.com/oIyprzn –

İlgili konular