我正在使用 Shiny 的 varSelectInput 函数来显示带有来自 spatialpolygondataframe 的 R Leaflet 的地图,以便通过选择对象的变量来绘制相应变量的地图并更改其颜色。为此,我从条件 varSelectInput 生成了 R 传单的 ColorBin 函数的反应对象。所有这些都在渲染地图时正常工作,因此地图被绘制,更新了图例的颜色和标题。但是,在部署图例 (addLegend) 时,我没有预期的结果,因为它没有显示。我尝试在渲染地图时从反应对象传递参数,就像我使用 addPolygons 函数一样,但我没有达到预期的结果。如下图: 在此处输入图片描述
43/5000 我使用的代码如下:
library(shiny)
library(leaflet)
library(tidyverse)
ssd_map <- leaflet() %>% addProviderTiles("CartoDB.DarkMatter")%>% setView(-8.53, 42.90, zoom = 12)
ui <- fluidPage(
titlePanel("Santiago de Compostela"),
mainPanel(
varSelectInput(
inputId = "option",
label = "Elige la información a representar:",
data = dataframe1 %>% select(`Población Total`,`Población Masculina`,`Población Femenina`,`Población < 16 años`)
),
leafletOutput("map")
))
server <- function(input, output) {
colorpal <- reactive({
if(input$option == "Población Total") {
colorBin("Blues",data$`Población Total`,bins = 5)
} else if (input$option == "Población Masculina"){
colorBin("Reds",data$`Población Masculina`,bins = 5)
} else if (input$option == "Población Femenina"){
colorBin("Oranges",data$`Población Femenina`,bins = 5)
} else
colorBin("Greens",data$`Población < 16 años`,bins = 5)
})
leyenda <- reactive({
if(input$option == "Población Total") {
data$`Población Total`
} else if (input$option == "Población Masculina"){
data$`Población Masculina`
} else if (input$option == "Población Femenina"){
data$`Población Femenina`
} else
data$`Población < 16 años`
})
output$map <- renderLeaflet({
ssd_map
})
observe({
pal <- colorpal()
leg <- leyenda()
leafletProxy("map", data = dat1) %>%
clearShapes() %>%
clearControls() %>%
addPolygons(color = "#444444" ,
weight = 1,
smoothFactor = 0.5,
opacity = 1.0,
fillOpacity = 0.5,
popup = ~paste(input$option) ,
fillColor = ~pal(eval(as.symbol(input$option))))%>%
addLegend(position = "topright", pal = pal , values =leg[input$option] ,
title = ~paste(input$option))
})
}
shinyApp(ui = ui, server = server)