我正在创建一个闪亮的应用程序,旨在显示一个等值区域图。
我想通过单选按钮反复更改我在地图上显示的值。
它与正常按钮一起工作正常,但我现在正在与radiobutton挣扎,任何想法?
您可以通过以下链接下载数据:https://www.data.gouv.fr/fr/datasets/r/8b004f01-e7af-40d2-ab4a-8108a8bd24b2
这是我目前的代码:
sData <- readOGR(dsn = " Set your path to the downloaded Data here")
ui<- bootstrapPage(
leafletOutput("mymap"),
absolutePanel(top = 10,
right = 10,
radioButtons("radio", h3("Indicateurs de mobilité"),
choices = list("AttrOne" = "Attr1",
"AttrTwo" = "Attr2")))
)
server <- function(input, output, session) {
v <- reactiveValues(data = sData$numdep)
observeEvent(input$Attr1, {
v$data <- sData $numdep
})
observeEvent(input$Attr2, {
v$data <- sData $insee
})
output$mymap <- renderLeaflet({
leaflet(sData) %>%
addProviderTiles(
providers$"CartoDB.DarkMatter") %>%
addPolygons(
fillColor = ~colorBin(palette = "YlOrRd",
bins = getBreaks(v$data,
nclass = 6,
method = "fisher-jenks"),
domain = v$data
)(v$data),
weight = 1,
opacity = 0.3,
color = "white",
fillOpacity = 0.3)
})
}
shinyApp(ui = ui, server = server)
至少有一个问题是你正在“聆听”错误的按钮,它应该是你在id
中确定的ui
,在你的情况下,“无线电”。此外,你可以用一个observeEvent
而不是你的方式来做你;
ui<- bootstrapPage(
leafletOutput("mymap"),
absolutePanel(top = 10,
right = 10,
radioButtons("radio", h3("Indicateurs de mobilité"),
choices = list("AttrOne" = "Attr1",
"AttrTwo" = "Attr2",
"AttrThree" = "Attr3")))
)
server <- function(input, output, session) {
v <- observeEvent(input$radio,{
if(input$radio=="Attr1"){
v$data <- Df$A1}
if(input$radio=="Attr2"){
v$data <- Df$A2}
if(input$radio=="Attr3"){
v$data <- Df$A4}
})
output$mymap <- renderLeaflet({
leaflet(Df) %>%
addProviderTiles(
providers$"CartoDB.DarkMatter") %>%
addPolygons(
fillColor = ~colorBin(palette = "YlOrRd",
bins = getBreaks(v$data,
nclass = 6,
method = "fisher-jenks"),
domain = v$data
)(v$data),
weight = 1,
opacity = 0.3,
color = "white",
fillOpacity = 0.3)
})
}
shinyApp(ui = ui, server = server)
尽管存在这个错误,但我无法向您保证这将会正常工作,因为您的示例不可重现。下次,拜托,您可以向我们提供dput(Df)
或至少一些行,以便我们可以从头到尾执行您的代码并找到任何其他问题吗?
你的代码:
ui<- bootstrapPage(
leafletOutput("mymap"),
absolutePanel(top = 10,
right = 10,
radioButtons("radio", h3("Indicateurs de mobilité"),
choices = list("AttrOne" = "Attr1",
"AttrTwo" = "Attr2")))
)
server <- function(input, output, session) {
v <- reactiveValues(data = sData$numdep)
observeEvent(input$radio,{
if(input$radio=="Attr1"){
v$data <- sData$numdep
}
if(input$radio=="Attr2"){
v$data <- sData$insee
}
})
output$mymap <- renderLeaflet({
leaflet(sData) %>%
addProviderTiles(
providers$"CartoDB.DarkMatter") %>%
addPolygons(
fillColor = ~colorBin(palette = "YlOrRd",
bins = getBreaks(v$data,
nclass = 6,
method = "fisher-jenks"),
domain = v$data
)(v$data),
weight = 1,
opacity = 0.3,
color = "white",
fillOpacity = 0.3)
})
}
shinyApp(ui = ui, server = server)
最好!