- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 Leaflet Shiny 应用程序,它有几个不同的交互元素,但我在将所有内容正确地组合在一起时遇到了一些问题。
我创建了一些经过严格修剪的示例代码(希望)能够捕获我的问题的严重程度:
library(raster)
library(RColorBrewer)
library(leaflet)
library(shiny)
#load rwa shapefile, remove extra columns
rwa <- getData("GADM", country = "RWA", level = 1)
rwa <- rwa[, -(6:13)]
#load bdi shapefile, remove extra columns, prepare to merge with rwa
bdi <- getData("GADM", country = "BDI", level = 1)
bdi <- bdi[, -(6:13)]
bdi <- spChFIDs(bdi, paste("bdi", row.names(bdi), sep = "."))
#merge
z <- rbind(rwa, bdi)
#add dummy data
z@data$data1 <- sample(1:20, size = length(z@data$OBJECTID), replace = T)
z@data$data2 <- sample(1:20, size = length(z@data$OBJECTID), replace = T)
z@data$data3 <- sample(1:20, size = length(z@data$OBJECTID), replace = T)
z@data$data4 <- sample(1:20, size = length(z@data$OBJECTID), replace = T)
#define color palettes
colorPal <- brewer.pal(4, "RdYlGn")
pal <- colorBin(palette = colorPal, domain = 1:20, bins = c(0, 5, 10, 15, 20), pretty = T)
#run shiny app
shinyApp(
ui = fluidPage(
#country dropdown selection
selectInput(inputId = "country",
label = "Country",
choices = c("", z@data$NAME_0),
selected = ""),
#test slider
sliderInput(inputId = "test",
label = "Test Slider",
min = 1,
max = 4,
value = 0,
step = 1,
animate = T), #end slider
#map image
leafletOutput('myMap')#end output, c6, fluidrow
), #END UI
#world level default map output
server <- function(input, output, session) {
#initial map rendering (blank tiles)
output$myMap <- renderLeaflet({
leaflet() %>%
addProviderTiles("CartoDB.PositronNoLabels",
options = tileOptions(noWrap = T)) %>%
setView(lng = 29.85, lat = -2.7, zoom = 7)
}) #END LEAFLET OUTPUT
#observe slider to update map
observe({
#define input as variable
x <- input$test
#create object for input country
dd <- input$country
#subset regions polygon by the selected country
selected <- z[z@data$NAME_0 == dd, ]
#define proxy map object for dynamic updating
proxy <- leafletProxy("myMap")
#create test layerId for polygon removal
test <- selected@data$OBJECTID
if(dd != ""){
#use proxy object so that tiles don't update with each slider input change
proxy %>%
# clearShapes() %>%
addPolygons(data = selected,
fillColor = ~pal(selected@data[[x + 5]]), #add 5 to match column number
fillOpacity = 1,
weight = 1,
stroke = T,
layerId = test)
} #END CONDITIONAL
}) #END OBSERVE EVENT
} #END SERVER
) #END SHINYAPP
有几个不同的事情正在发生。首先,从下拉选择菜单中选择您感兴趣的国家/地区(将初始 map 输出保留为不绘制多边形的空白图 block 非常重要 - shapefile 仅在从下拉菜单中选择国家/地区时绘制) 。从那里,您可以使用 slider 更新分区统计图的配色方案。
我使用 leafletProxy 动态更新 map ,这样每次用户启用某种交互性时就不会重新绘制 map 。当使用 slider 更新多边形样式时,这一点尤其重要 - 如果每次都重新绘制 map ,则会非常不稳定且难看。当我运行上面写的代码时,结果(以短视频形式)是 here 。正如您所看到的,颜色无缝变化。
但是,使用此代码,我不确定如何删除先前绘制的 map 元素(国家/地区)。正如您在上面的链接示例中看到的,当我单击第二个国家/地区时,第一个选定的国家/地区不会被删除。我意识到这是因为我使用 leafletProxy
来更新 map 。我熟悉使用layerIds和removeShape()
来删除多边形,但是按照我的代码编写方式,我无法让它工作。我尝试过以几种不同的方式使用 LayerId,但运气为零。
当我在 proxy
调用之后取消注释行 clearShapes() %>%
时,我能够删除之前选择的多边形。不幸的是,这会导致每次更新 slider 时都会重新绘制 map ,从而导致 really ugly choppiness 。
有什么方法可以使用leafletProxy
来删除以前选择的多边形并使用 slider 无缝更新 map 样式吗?
最佳答案
我会将您的observe() 分开并为每个输入使用observeEvent()。在 obervseEvent 中对 input$country 使用clearShapes(),但不能对 input$test 使用。
关于r - 在 Leaflet Shiny 应用程序中,removeShape() 与 slider 交互性配合时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41028078/
我正在通过 Rscript.exe 在托管到我的本地网络的服务器上运行 Shiny 应用程序。如果我们要将其移植到网上,我们可以通过我们设置的服务器基础设施来实现。 Shiny Server 是否添加
当我运行我的 Shiny 应用程序时,我的数据表的标题向左移动。见下文。 假设这张表在选项卡 A 上。 当我单击不同的选项卡(选项卡 B)时,标题会正确对齐,然后再次单击选项卡 A。有关更正的标题,请
是否有查询正在运行的 RStudio Shiny 网页以显示正在运行的服务器版本的变量或方法?例如。显示类似 shiny-0.10.1在网页上。 有任何想法吗? 最佳答案 您可以使用 packageV
我想在以下位置重现示例:https://scip.shinyapps.io/scip_app/ 基本上,我有一个 300 x 300 调整后的相关矩阵和一个 300 x 300 未调整的相关矩阵,我想
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 去年关闭。 社区去年审查了是否重
在我部署应用程序时,应用程序中仍然存在一些异常情况,因此我想将它们从我的帐户中删除。我试过了,但没有找到任何选择。任何帮助将不胜感激。谢谢 最佳答案 在从 shiny.io 填充 token 信息后,
据我了解,Shiny Server 的开源版本不支持身份验证。 我们有一个环境使用 WebSEAL 代理服务来验证用户并将他们的访问引导到 Web 应用程序。 我们希望向经过身份验证的用户公开 Shi
我想将一个 R 应用程序(在装有 OS RHEL6.8 的实际 Shiny 服务器上运行良好)转移到另一个"new" Shiny 服务器。我的应用程序在第一台服务器上运行良好。这个想法是将它放在性能更
我正在通过 #RMarkdown 创建一个测试页面并尝试在其中添加 #Shiny 内容。在编织到 HTML 时,我收到以下错误。 Error in appshot.shiny.appobj(list(
有没有一种简单的方法可以在 shiny 中创建这样的东西? 最佳答案 RStudio 目前正在处理 sortable 包:RStudio/sortable 请注意,它目前正在开发中(标记为实验性),因
当我在一个非常简单的 Shiny 应用程序中按下操作按钮时,我试图调用另一个 Shiny 的应用程序。另一个应用程序位于一个带有 ui.R 和 server.R 文件的名为 Benefits 的文件夹
我最近试图在我的服务器上打开一个 Shiny 的服务器应用程序,并遇到了我以前从未见过的错误。 Error in loadNamespace(j -c "R -e \"install.pack
我有 Shiny 的应用程序,它显示旧数据(延迟 4 天!),但服务器数据已刷新(当天)。 奇怪的是,服务器上不存在旧数据集 - 似乎只存在于 Shiny 缓存中。 在服务器上,我有 1 个数据集由
我有一个在本地 R 服务器(端口 8787)上运行的应用程序。当我将它移动到 Shiny Server(端口 3838)时,我收到消息 ERROR: An error has occurred. Ch
我试图消除此表格与浏览器窗口左侧之间的空间,但当我这样做时,它弄乱了导航栏链接和标题的间距。 如何在不改变 navbar/ui/li 元素的填充/边距的情况下删除 excelR 表上的填充/边距? l
我已经阅读并实现了来自 link 的 Shiny 表中的复选框.但是当我在 R 中运行时,列中的输出是 , 等在每个“选择”单元格中,我希望“选择”列中的输出是复选框,我的问题的解决方案是什么?谢谢
我一直在开发一个 Shiny 的应用程序,它开始变得相当大。 我通过将应用程序的不同部分放入各自文件中的模块中解决了这个问题,然后获取文件。 问题是,当我在源文件的服务器部分(下例中的 events.
我对 Shiny 和 DataTables 还很陌生,所以这可能是个愚蠢的问题。由于某种原因,我无法更改列宽。我试过了 output$table<-DT::renderDataTable( {w
我安装了我的 Shiny 服务器,它在这个目录下的多个应用程序上工作正常: /srv/ Shiny 服务器/app1/srv/ Shiny 服务器/app2 我可以使用 www.mydomain.co
我想在我的 Shiny 应用程序中包含我的 myMardown.md 文档。 为了显示目录,我使用了 toc 选项,还使用了 css (myStyle.css) myMarkdown.md : ---
我是一名优秀的程序员,十分优秀!