R 使用UI打开和关闭数据和传单显示
我已经在ui.R和server.R文件中设置了这个问题的示例。这是ui.R文件。有三个随机数据集。无论用户界面做了什么,都将显示带有标记的。其他两个数据集应仅在被请求为“圆”时绘制 映射由server.R生成,如下所示。这将生成随机数据以及纬度和经度位置R 使用UI打开和关闭数据和传单显示,r,shiny,leaflet,R,Shiny,Leaflet,我已经在ui.R和server.R文件中设置了这个问题的示例。这是ui.R文件。有三个随机数据集。无论用户界面做了什么,都将显示带有标记的。其他两个数据集应仅在被请求为“圆”时绘制 映射由server.R生成,如下所示。这将生成随机数据以及纬度和经度位置 library(shiny) library(leaflet) library(ggplot2) shinyServer(function(input, output) { output$map <- renderLeaflet
library(shiny)
library(leaflet)
library(ggplot2)
shinyServer(function(input, output) {
output$map <- renderLeaflet({
leaflet() %>%
addTiles(group = "OpenStreetMap") %>%
addMarkers(runif(20,-75,-74),
runif(20, 41, 42))
})
observe({
proxy <- leafletProxy("map")
if (input$Circles == TRUE) {
proxy %>% addCircles(runif(20,-75,-74),
runif(20, 41, 42),
group = "Circles",
color = "red") %>%
addCircles(runif(20,-75,-74),
runif(20, 41, 42),
group = "Circles",
color = "blue") %>%
addLegend(
position = "bottomright",
colors = c("red", "blue"),
labels = c("Group 1", "Group 2")
)
# cannot put group or label on legend.
} else {
proxy %>% hideGroup("Circles")
# %>% hideGroup("Group 2")
}
})
})
库(闪亮)
图书馆(单张)
图书馆(GG2)
shinyServer(功能(输入、输出){
输出$map%
addTiles(group=“OpenStreetMap”)%%>%
添加标记(runif(20,-75,-74),
runif(20、41、42))
})
观察({
代理%addCircles(runif(20,-75,-74),
runif(20,41,42),
group=“圆圈”,
color=“red”)%%>%
添加圆(runif(20,-75,-74),
runif(20,41,42),
group=“圆圈”,
color=“blue”)%%>%
addLegend(
position=“bottomright”,
颜色=c(“红色”、“蓝色”),
标签=c(“第1组”、“第2组”)
)
#无法在图例上放置组或标签。
}否则{
代理%>%hideGroup(“圆”)
#%%>%hideGroup(“第2组”)
}
})
})
当程序启动时,显示圆圈处于启用状态(TRUE)。我在这里看到两个主要问题。首先,可以关闭圆圈,但这是任何UI控件的结束。问题是它们无法再次打开。如果我尝试将checkboxInput启动为FALSE,UI控件将不会将其打开。我不知道这是标准,还是我做错了什么
第二个主要问题是,我无法编程将图例与圆圈一起关闭。使用hideGroup()函数关闭这些圆。这将被拒绝用于图例。我已经使用了我尝试过的命令,并将其转换为注释行。继续并删除#符号,以便您可以看到它造成的错误。我还没有找到替代方案。我要感谢SymblixAU将我送到正确的方向。hideGroup和showGroup的问题在于,这两个函数都使用少量变量。数据显示必须由其他命令预定义,如addCircles或addMarkers。我终于有了一个工作版本,如下所示:
library(shiny)
library(leaflet)
shinyServer(function(input, output) {
output$map <- renderLeaflet({
leaflet() %>%
addTiles(group = "OpenStreetMap") %>%
addMarkers(runif(20,-75,-74),
runif(20, 41, 42))
})
proxy <- leafletProxy("map")
proxy %>% addCircles(runif(20,-75,-74),
runif(20, 41, 42),
group = "Circles",
color = "red") %>%
addCircles(runif(20,-75,-74),
runif(20, 41, 42),
group = "Circles",
color = "blue")
# now we can show or hide depending on UI
observe({
if (input$Circles == TRUE) {
proxy %>% showGroup("Circles")
} else {
proxy %>% hideGroup("Circles")
}
})
})
库(闪亮)
图书馆(单张)
shinyServer(功能(输入、输出){
输出$map%
addTiles(group=“OpenStreetMap”)%%>%
添加标记(runif(20,-75,-74),
runif(20、41、42))
})
代理%addCircles(runif(20,-75,-74),
runif(20,41,42),
group=“圆圈”,
color=“red”)%%>%
添加圆(runif(20,-75,-74),
runif(20,41,42),
group=“圆圈”,
color=“蓝色”)
#现在我们可以根据用户界面显示或隐藏
观察({
如果(输入$Circles==TRUE){
代理%>%showGroup(“圆圈”)
}否则{
代理%>%hideGroup(“圆”)
}
})
})
我也放弃了使用传说。我还没有找到能够充分控制添加到绘图中的图例数量的软件,因此我将不得不以另一种方式描述颜色的使用,可能是在文本中。与
hideGroup
相反的是showGroup
。一旦你隐藏了它们,如果你想看到它们,你需要再次“显示”它们。这些圆的最初创建是使用命令“addCircles()”。我会用showGroup替换这些吗,或者它与addCircles以某种方式结合在一起?您可能需要addCircles()
到原始的传单()
调用。然后,代理
事件根据输入$Circles
条件显示或隐藏,我将尝试。有没有办法隐藏这个传说?
library(shiny)
library(leaflet)
shinyServer(function(input, output) {
output$map <- renderLeaflet({
leaflet() %>%
addTiles(group = "OpenStreetMap") %>%
addMarkers(runif(20,-75,-74),
runif(20, 41, 42))
})
proxy <- leafletProxy("map")
proxy %>% addCircles(runif(20,-75,-74),
runif(20, 41, 42),
group = "Circles",
color = "red") %>%
addCircles(runif(20,-75,-74),
runif(20, 41, 42),
group = "Circles",
color = "blue")
# now we can show or hide depending on UI
observe({
if (input$Circles == TRUE) {
proxy %>% showGroup("Circles")
} else {
proxy %>% hideGroup("Circles")
}
})
})