R 使用不同列中的多个年份在Shiny中创建传单地图
我正在尝试创建一个地图,用户可以在地图上选择按年份查看追踪头列表中的追踪计数数据。我已经决定只做一年,虽然不是很优雅,但现在我正在尝试包括多年。这里是一个简单的数据集,它代表了我正在使用的数据集R 使用不同列中的多个年份在Shiny中创建传单地图,r,shiny,leaflet,shinyapps,R,Shiny,Leaflet,Shinyapps,我正在尝试创建一个地图,用户可以在地图上选择按年份查看追踪头列表中的追踪计数数据。我已经决定只做一年,虽然不是很优雅,但现在我正在尝试包括多年。这里是一个简单的数据集,它代表了我正在使用的数据集 site <- c("Browns Canyon", "Hancock", "Monarch Crest") lat <- c("38.76210", "38.70581", "38.49185") long <- c("-105.9776", "-106
site <- c("Browns Canyon", "Hancock", "Monarch Crest")
lat <- c("38.76210", "38.70581", "38.49185")
long <- c("-105.9776", "-106.3405", "-106.3171")
agency <- c("BLM", "USFS", "BLM")
Total2016 <- ("353", "1112", "9875")
Total2017 <- c("0", "138", "7435")
Total2018 <- c("201", "145", "16448")
Total2019 <- c("153", "0", "9655")
alluse <- data.frame(site, lat, long, Total2016, Total2017, Total2018, Total2019)
site我试图复制您的代码,但是示例数据集中缺少alluse$trailhead
和alluse$agency
。尽管如此,我还必须指出,即使你在同一时间实现了所有年份的规划(这是可行的),也是没有用的。由于所有年份中的同一点具有相同的坐标,因此唯一可见的点将是最后绘制的年份。您可以这样做,但在多个选定年份中出现的这些点中,您将无法可视化或生成弹出窗口,除非是最后一个绘制年份。您好。我已经修改了代码,去掉了alluse$trailhead,它现在是alluse$site,并在alluse中添加了代理栏。这是同时观察不同年份的一个好观点。这是我工作的客户想要的东西,但现在你已经指出了,不用担心这一点是完全有道理的。所以现在我只想要选择不同年份的功能,我仍然对如何清除弹出窗口感到困惑。
ui <- navbarPage(
"Visitor Usage", id = "nav",
tabPanel("Trailhead Visitation", div(class = "outer",
tags$head(includeCSS("www/style.css")),
leafletOutput("UsageMap", width = "100%", height = "100%"),
absolutePanel(id = "controls", class = "panel panel-default", fixed = TRUE,
draggable = TRUE, top = 70, left = "auto", right = 20, bottom =
"auto", width = 330, height = "auto",
h2("Trailhead Explorer"),
selectInput("year", label = h4("Year:"),
choices = c("2016" = "Total2016",
"2017" = "Total2017",
"2018" = "Total2018",
"2019" = "Total2019"),
selected = "", width = "90%", multiple = TRUE),
tags$div(id="cite", 'Data provided by USFS and BLM and compiled for Chaffee County
Recreation in Balance')
))))
server <- function(input, output, session){
selectedYear <- reactive({switch(input$year,
"2016" = alluse$Total2016,
"2017" = alluse$Total2017,
"2018" = alluse$Total2018,
"2019" = alluse$Total2019)
})
pal1 <- colorBin(palette = "Reds", domain = NULL, bins = 10, pretty = FALSE)
output$UsageMap <- renderLeaflet({
leaflet(alluse) %>%
addProviderTiles("Esri.WorldTopoMap") %>%
setView(lng = -106.183908, lat = 38.766663, zoom = 9) %>%
addCircles(data = alluse, lng = alluse$long, lat = alluse$lat,
weight = 1, radius = sqrt(selectedYear)*30,
fillColor = ~pal1(selectedYear()),
popup = paste0(h3("Trailhead:"), alluse$site), color = "#BDBDC3", fillOpacity = 0.8,
weight = 1) %>%
addLegend("bottomleft", pal = pal1, values = selectedYear(), title =
"Trailhead Usage")
})
observeEvent(input$year, {
trail_popup <- paste0(h3("Trailhead:"), selectedYear()$site,
h4("Total 2016:"), selectedYear()$Total2016,
h4("Total 2017:"), selectedYear()$Total2017,
h4("Total 2018:"), selectedYear()$Total2018,
h4("Total 2019:"), selectedYear()$Total2019)
leafletProxy("UsageMap", data = selectedYear()) %>%
clearGroup(c("year"), fillColor = "orange",
popup = trail_popup,
color = "#BDBDC3",
fillOpacity = 0.8,
weight = 5)
})
}