带单选按钮的闪亮无功值

问题描述 投票:1回答:1

我正在创建一个闪亮的应用程序,旨在显示一个等值区域图。

我想通过单选按钮反复更改我在地图上显示的值。

它与正常按钮一起工作正常,但我现在正在与radiobutton挣扎,任何想法?

您可以通过以下链接下载数据:https://www.data.gouv.fr/fr/datasets/r/8b004f01-e7af-40d2-ab4a-8108a8bd24b2

这是我目前的代码:

sData <- readOGR(dsn = " Set your path to the downloaded Data here")

ui<- bootstrapPage(
  leafletOutput("mymap"),
  absolutePanel(top = 10, 
                right = 10,
                radioButtons("radio", h3("Indicateurs de mobilité"),
                             choices = list("AttrOne" = "Attr1",
                                            "AttrTwo" = "Attr2")))
  )

server <- function(input, output, session) {
  v <- reactiveValues(data = sData$numdep)

  observeEvent(input$Attr1, {
    v$data <- sData $numdep
  })
  observeEvent(input$Attr2, {
    v$data <- sData $insee
  })



  output$mymap <- renderLeaflet({
    leaflet(sData) %>%  
      addProviderTiles(
           providers$"CartoDB.DarkMatter") %>%
      addPolygons(
           fillColor = ~colorBin(palette = "YlOrRd", 
                                 bins = getBreaks(v$data, 
                                                  nclass = 6, 
                                                  method = "fisher-jenks"),
                                 domain = v$data
                                 )(v$data),
           weight = 1,
           opacity = 0.3,
           color = "white",
           fillOpacity = 0.3)
  })
}

shinyApp(ui = ui, server = server)
r shiny radio-button leaflet choropleth
1个回答
1
投票

至少有一个问题是你正在“聆听”错误的按钮,它应该是你在id中确定的ui,在你的情况下,“无线电”。此外,你可以用一个observeEvent而不是你的方式来做你;

    ui<- bootstrapPage(
      leafletOutput("mymap"),
      absolutePanel(top = 10, 
                    right = 10,
                    radioButtons("radio", h3("Indicateurs de mobilité"),
                                 choices = list("AttrOne" = "Attr1",
                                                "AttrTwo" = "Attr2",
                                                "AttrThree" = "Attr3")))
      )

    server <- function(input, output, session) {
  v <-  observeEvent(input$radio,{ 

     if(input$radio=="Attr1"){
         v$data <- Df$A1}
     if(input$radio=="Attr2"){
         v$data <- Df$A2}
     if(input$radio=="Attr3"){
        v$data <- Df$A4}
  })





  output$mymap <- renderLeaflet({
    leaflet(Df) %>%  
      addProviderTiles(
           providers$"CartoDB.DarkMatter") %>%
      addPolygons(
           fillColor = ~colorBin(palette = "YlOrRd", 
                                 bins = getBreaks(v$data, 
                                                  nclass = 6, 
                                                  method = "fisher-jenks"),
                                 domain = v$data
                                 )(v$data),
           weight = 1,
           opacity = 0.3,
           color = "white",
           fillOpacity = 0.3)
  })
}

shinyApp(ui = ui, server = server)

尽管存在这个错误,但我无法向您保证这将会正常工作,因为您的示例不可重现。下次,拜托,您可以向我们提供dput(Df)或至少一些行,以便我们可以从头到尾执行您的代码并找到任何其他问题吗?

你的代码:

ui<- bootstrapPage(
  leafletOutput("mymap"),
  absolutePanel(top = 10, 
                right = 10,
                radioButtons("radio", h3("Indicateurs de mobilité"),
                             choices = list("AttrOne" = "Attr1",
                                            "AttrTwo" = "Attr2")))
  )

    server <- function(input, output, session) {
  v <- reactiveValues(data = sData$numdep)

observeEvent(input$radio,{ 

    if(input$radio=="Attr1"){
      v$data <- sData$numdep
      }
    if(input$radio=="Attr2"){
      v$data <- sData$insee
      }
  })

   output$mymap <- renderLeaflet({
    leaflet(sData) %>%  
      addProviderTiles(
           providers$"CartoDB.DarkMatter") %>%
      addPolygons(
           fillColor = ~colorBin(palette = "YlOrRd", 
                                 bins = getBreaks(v$data, 
                                                  nclass = 6, 
                                                  method = "fisher-jenks"),
                                 domain = v$data
                                 )(v$data),
           weight = 1,
           opacity = 0.3,
           color = "white",
           fillOpacity = 0.3)
  })
}

shinyApp(ui = ui, server = server)

最好!

© www.soinside.com 2019 - 2024. All rights reserved.