我想制作一个闪亮的应用程序,其中多边形的颜色取决于单击的多边形。当一切都是静态的时,我可以使它工作,但是使用reacitve值会使我不寒而栗。
本质上,我认为我要做的是将调色板的domain参数和fill color参数设置为反应性值。
stgt.counts是我的shapefile。
app <- shinyApp(
ui = bootstrapPage(
leafletOutput('map'),
textOutput('text')
),
server = function(input, output) {
filtered.zone <- reactive({
paste0("count", input$map_shape_click$id)
})
filtered.domain <- reactive({
paste0("stgt.counts$count", input$map_shape_click$id)
})
output$map <- renderLeaflet({
zone <- filtered.zone()
domain <- filtered.domain()
bins <- c(0,1,2,5,6,7,8)
pal <- colorBin("YlOrRd", domain = domain, bins = bins)
m <- leaflet(stgt.counts) %>%
addProviderTiles(providers$Stamen.Toner)
m %>% addPolygons(
fillColor = ~pal(zone),
weight = 2,
layerID = ~NO,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7
)
})
output$text <- renderText({
if (is.null(input$map_shape_click$id)) return()
print(input$map_shape_click$id)
})
}
)
runApp(app)
我得到的当前警告是“警告:cut.default中的错误。默认值:'x'必须是数字'-我想这是因为zone和domain是字符串。是吗?这是我第一个使用Reacts的闪亮应用程序我想有一种更好的方法来完成此操作。我们非常感谢您的帮助。