R选中复选框组在地图上绘制数据

R选中复选框组在地图上绘制数据,r,shiny,r-leaflet,R,Shiny,R Leaflet,我对shiny很陌生,我有一个问题。 我有一个简单的数据集,其中包含在某个位置(X,Y)观察到的物种(物种)数量(总数) 我想生成一张地图,让你可以在下拉菜单中选择物种。闪亮然后显示你是地图上出现的物种 根据我的经验,我已经走得很远了,但是在菜单中选择物种并没有任何作用 ui <- (fluidPage(titlePanel("Species Checker"), sidebarLayout( sidebarPan


我对shiny很陌生,我有一个问题。
我有一个简单的数据集,其中包含在某个位置(X,Y)观察到的物种(物种)数量(总数)

我想生成一张地图,让你可以在下拉菜单中选择物种。闪亮然后显示你是地图上出现的物种

根据我的经验,我已经走得很远了,但是在菜单中选择物种并没有任何作用

ui <- (fluidPage(titlePanel("Species Checker"),  
                 sidebarLayout(
                   sidebarPanel(
                      selectizeInput('species', 'Choose species', 
                   choices    = df$Species, multiple = TRUE)
                     ),
                   mainPanel(
                     leafletOutput("CountryMap", 
               width = 1000, height = 500))
                 )
))
我知道我的代码可能很凌乱,但我再次强调我的经验=) 我并没有马上在这里得到一个示例数据集,所以这里是图片

这是上述代码的结果(数据略有不同)
这是您需要的。我认为你有足够的技巧来理解这一点,但如果你有任何问题,请发表评论

server <- function(input, output, session) {
  # map_data <- reactive({
    # req(input$species)
    # df[df$Species %in% input$species, ]
  # })

  output$CountryMap <- renderLeaflet({
    leaflet() %>% addTiles() %>% 
      setView(lng = 10, lat = 40, zoom = 5)
  })

  map_proxy <- leafletProxy("CountryMap")

  observe({
    md <- df[df$Species %in% input$species, ]
    map_proxy %>%
      addCircles(lng = md$Y, lat = md$X, weight = 10, 
      radius = sqrt(md$Number_Total)*15000, popup = md$Species)
  })
}

server上述代码的结果是:啊哈,是的,这确实是一个很大的帮助!我理解代码。现在我可以选择物种,它们将显示在我的地图上。如果我取消选择某个物种,该物种将保留在地图上。我一直在想办法,但到目前为止没有成功:-)我很快会更新:-)再次,谢谢!如果它解决了你的问题,请考虑它是正确的。嗯,嗯,我仍然在努力“重置”地图。我将在下面发表评论:-)很快解决了我希望:-)好的,我已经编辑了答案并在
map\u data
reactive中注释掉
req(input$species)
。这应该能解决你的问题。让我知道。不幸的是,它没有改变?被绘制的物种,仍然被绘制。。。对不起,再一次,谢谢!
shinyApp(ui = ui, server = server)
server <- function(input, output, session) {
  # map_data <- reactive({
    # req(input$species)
    # df[df$Species %in% input$species, ]
  # })

  output$CountryMap <- renderLeaflet({
    leaflet() %>% addTiles() %>% 
      setView(lng = 10, lat = 40, zoom = 5)
  })

  map_proxy <- leafletProxy("CountryMap")

  observe({
    md <- df[df$Species %in% input$species, ]
    map_proxy %>%
      addCircles(lng = md$Y, lat = md$X, weight = 10, 
      radius = sqrt(md$Number_Total)*15000, popup = md$Species)
  })
}