如何在 Shiny 中集成使用 Leaflet 制作的多个分区统计图?

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

我在 Leaflet 中创建了三张独立的分区统计图,所有地图都位于欧洲各地,使用相同的国家/地区。每个分区统计图显示不同类型的比率,并且有 1999 年和 2009 年的两个图层。

虽然我已成功将分区统计图与年份图层单独集成到闪亮的地图中,但我希望能够只拥有一个带有下拉栏的闪亮地图,以便在三个不同的分区统计图之间单击,同时仍然保留每个地图的图层.

有人可以建议如何做到这一点吗?

r shiny r-leaflet choropleth
1个回答
0
投票

您可以使用 leafletProxy 来实现这一点。我稍微修改了here的示例,以更好地满足您的要求。希望这有帮助!

library(shiny)
library(leaflet)

ui <- bootstrapPage(
  tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
  leafletOutput("map", width = "100%", height = "100%"),
  absolutePanel(top = 10, right = 10,
                selectInput("maptype", "Map type: ",
                            choices = c("map 1", "map 2", "map 3")
                )
  )
)

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

  # Reactive expression for the data subsetted to what the user selected
  filteredData <- reactive({
    if(input$maptype=="map 1") return(quakes[sample(1:nrow(quakes),50,replace=TRUE),])
    if(input$maptype=="map 2") return(head(quakes,50))
    if(input$maptype=="map 3") return(tail(quakes,50))

  })


  output$map <- renderLeaflet({
    leaflet(quakes) %>% addTiles() %>%
      fitBounds(~min(long), ~min(lat), ~max(long), ~max(lat))
  })

  observe({
    leafletProxy("map", data = filteredData()) %>%
      clearShapes() %>%
      addCircles(radius = ~10^mag/10, weight = 1, color = "#777777", fillOpacity = 0.7, popup = ~paste(mag)
      )
  })


}

shinyApp(ui, server)
© www.soinside.com 2019 - 2024. All rights reserved.