【问题标题】:changing data based of leaflet shiny input根据传单闪亮输入更改数据
【发布时间】:2020-07-20 12:45:25
【问题描述】:

我想根据选择作为输入的年份更改数据以绘制在 shapefile(世界)上。根据你的说法,哪个更聪明:

  1. 将数据设置为宽(data_2020、data_2019、data_2018...)并在输入更改时更改列? -或者-

  2. 设置数据为long(data, year),输入变化时根据year == 20XX过滤数据列?

我已经尝试了好几天,但无法成功。下面的示例是我的server.R 文件,其中数据已设置为长格式,我选择了一年以使反应性工作,但它不会更新数据。宽格式不适用于(注释的)开关功能。

function(input, output) {
  
  selectedYear <- reactive({
    #shape_data <- subset(shape_data, year == input$year)
    shape_data$month

    #datayear <- switch(input$year, 
    #       "2017" = shape_data$month2017, 
    #       "2018" = shape_data$month2018, 
    #       "2019" = shape_data$month2019)
  })
  
  
  output$mymap <- renderLeaflet({
    
    bins <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
    pal <- colorBin(c("#3EA055", "#FFE5B4", "#F2BB66", "#FFDB58", "#FBB117", "#C68E17", "#E56717", "#C34A2C", "#C11B17", "#9F000F", "#8C001A" , "#7E3517"), domain = selectedYear(), bins = bins, na.color = "#808080")
    
    leaflet(shape_data) %>%
    setView(0, 37.8, 2) %>%
    addTiles() %>% 
    addPolygons(fillColor = ~pal(selectedYear()),
                weight = 2,
                opacity = 1,
                color = "black",
                fillOpacity = 0.7)
   })
  
  observe({
    req(input$year)
      
    bins <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
    pal <- colorBin(c("#3EA055", "#FFE5B4", "#F2BB66", "#FFDB58", "#FBB117", "#C68E17", "#E56717", "#C34A2C", "#C11B17", "#9F000F", "#8C001A" , "#7E3517"), domain = selectedYear(), bins = bins, na.color = "#808080")
      
    leafletProxy("mymap", data = shape_data) %>%
      clearShapes() %>% 
      addPolygons(fillColor = ~pal(selectedYear()),
                  weight = 2,
                  opacity = 1,
                  color = "black",
                  fillOpacity = 0.7)
  })

编辑:拼写

【问题讨论】:

    标签: r input shiny leaflet geospatial


    【解决方案1】:

    你的陈述

    shape_data <- subset(shape_data, year == input$year)
    

    在第一年选择后更改shape_data。请改成

    shape_data2 <- subset(shape_data, year == input$year)
    

    【讨论】:

    • 感谢 observeEvent() 函数中的这一行之后合并我的数据和 shapefile 后它起作用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2020-06-23
    • 1970-01-01
    • 2021-03-09
    • 2018-04-30
    • 2020-10-06
    • 2021-04-18
    相关资源
    最近更新 更多