如何在Shiny中实时刷新sliderInput()(不仅仅是滑动结束时)?

2024-05-01

抱歉,不知道问题说得够清楚吗:在Shiny中,滑块每次滑动时,只会计算并更新滑动结束时的值。如果我将它的值链接到图表上,滑动时看起来不太平滑(图表只会在释放鼠标时或几秒钟后发生变化,而不是随着滑动而不断变化)。

使用滑动条改变y,图表中红点的位置就会改变。

输入和图表 https://i.stack.imgur.com/7M3wD.png

我的部分代码如下:

In ui.R:

sliderInput("slider_mean", 
HTML("Try to change the value of ŷ:"),
min = 1, max = 200, value = 100,width="30%"),

plotlyOutput('meanplot'),

在server.R中:(这段代码可能不完整,只是举个例子)

  output$meanplot <- renderPlotly({
    
    meantb <- data.frame(y_hat = 1:200) %>%
      mutate(col2 =(y_mean1()-y_hat)^2+(y_mean2()-y_hat)^2+(y_mean3()-y_hat)^2+(y_mean4()-y_hat)^2+(y_mean5()-y_hat)^2+(y_mean6()-y_hat)^2)

    #Here is to input the slider value
    highlight_adjust <- meantb %>% 
      filter(y_hat %in% input$slider_mean)
    
    p=ggplot(meantb,
           aes(x = y_hat, y = col2)) + 
      
      geom_point(size =0.7,color="black") +
      
      geom_point(data=highlight_adjust, 
                 aes(x = y_hat, y = col2), 
                 color='red')+

      geom_line(size = 0.2,color="black") +
    ggplotly(p)
  })

闪亮的例子:

https://shiny.rstudio.com/gallery/slider-bar-and-slider-range.html https://shiny.rstudio.com/gallery/slider-bar-and-slider-range.html

如果我们快速移动滑块,输出值就会有延迟。


阅读了一些内容后的源代码sliderInput https://github.com/rstudio/shiny/blob/2ce18ef3248bdeebdfadf7846fa61bfbf1b064a0/inst/www/shared/shiny.js#L6159我发现默认的debounce行为(参见the getRatePolicy本文的部分 https://shiny.rstudio.com/articles/building-inputs.html)的滑块仅在没有a的情况下才被粘附data-immediateHTML 代码中的属性。

也就是说,我们只需将此属性添加到 HTML 中,滑块就会立即做出反应。

Note.如果你查看之前引用的源代码,你会发现receiveMessage将重置immediate to false. receiveMessage每当我们使用时都会被调用updateSliderInput。因此,调用后updateSliderInput我们必须重新分配immediatedata 属性以便仍然看到行为。

在下面的示例中,您会看到被修改的滑块的值会立即更新,而第二个滑块则显示默认行为。点击一下update会将这种行为转变为某种附带损害,如果您想使用updateSliderInput,您应该确保data-immediate再次添加属性(代码为reset按钮显示了一种可能的方法)。

但是,请注意,闪亮的团队很可能有一个原因没有向最终用户公开此功能,因此该解决方案应被视为黑客并谨慎使用。 (从源代码来看,他们使用了immediate使用时属性推翻默认速率策略updateSliderInput(因此receiveMessage).

library(shiny)
library(shinyjs)

my_sld <- function(...) {
   sld <- sliderInput(...)
   sld$children[[2]]$attribs$`data-immediate` <- "true"
   sld
}

shinyApp(
   fluidPage(
      useShinyjs(),
      my_sld("sld1", "Immediate:", 1, 10, 1), 
      verbatimTextOutput("dbg1"),
      sliderInput("sld2", "Debounced:", 1, 10, 1),
      verbatimTextOutput("dbg2"),
      actionButton("update", "Update kills Immediateness"),
      actionButton("reset", "Re-add immediate attribute")
      ),
   function(input, output, session) {
      output$dbg1 <- renderPrint(input$sld1)
      output$dbg2 <- renderPrint(input$sld2)
      observeEvent(input$update, {
         updateSliderInput(session, "sld1", value = 8)
      })
      observeEvent(input$reset, {
         runjs("$('#sld1').data('immediate', true);")
      })
   })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Shiny中实时刷新sliderInput()(不仅仅是滑动结束时)? 的相关文章

随机推荐

  • CSS“Shrinkwrap”方法如何与 max-width 一起使用并且没有 BR 换行标记?

    我正在尝试创建一个最大宽度边界框 它将包裹文本 在空格上 不允许断字 并收缩到最长文本行的宽度 有关各种收缩包裹方法的演示 请参见http www brunildo org test IEMshrink to fit html http w
  • Android SQLite 通配符

    我正在尝试使用通配符元素进行查询 以在 SQLite 表中搜索特定变量中任意位置具有元素的条目 public String getCheckoutEntry String title String ISBN Wild card Syntax
  • 在哪里可以找到 Fluent NHibernate 教程?

    我用谷歌搜索并环顾四周 是否有人知道任何隐藏的宝石不在谷歌搜索的前几页中 The wiki https github com jagregory fluent nhibernate wiki 是你最好的选择 我有过几个流畅的 NHibern
  • 骆驼:我如何异步发送到端点

    如何在不等待端点的路由被处理的情况下向端点发送消息 也就是说 我的路由应该只分派消息并完成 wireTap endpoint 就是答案
  • Fabric.js canvas.toDataURL() 通过 Ajax 发送到 PHP

    当我需要创建具有透明背景的图像时 我遇到了问题 我还是不知道问题出在fabricjs还是php 当我发送带有彩色背景的图像时 一切正常 当我发送具有透明背景的图像时会出现问题 生成的图像是用黑色背景创建的 那么 让我更好地解释一下 当用户单
  • 无法使用 Rails 3.2 创建插件?

    我在最新版本中遇到了 Rails 问题 我创建了一个新应用程序 rails new MyProject 但我没有脚本 生成 只有脚本 rails 当我输入时 ruby script rails generate plugin my plug
  • 调用多个ajax调用

    ajax url jsonpCallback item contentType application json dataType jsonp success function data console log data var marku
  • 为什么存储开销会在 C# 数据类型中产生浪费?

    在副主题中存储开销 关于章节 C 5 0 简而言之书上有这样一条一般性注释 现在 我想知道为什么 struct 中的字段A造成空间浪费 或者 作者整篇笔记的要点是什么 Each byte字段占用1个字节 而每个long字段占用8个字节 这意
  • FirebaseRemoteConfigClientException:Firebase 安装无法获取用于提取的安装身份验证令牌

    我遇到异常 com google firebase remoteconfig FirebaseRemoteConfigClientException Firebase Installations failed to get installa
  • 如何删除因缩小以适合元素而自动换行引起的额外空间?

    我正在尝试使用收缩来贴合 container 它可以完美地工作 直到它包含的元素换行为止 这会使其扩展到 180 像素 screen dimensions width 250px height 100px background color
  • 串流期货列表的最有效方式

    我通过流式传输对象列表来调用异步客户端方法 该方法返回 Future 迭代调用后返回的 Future 列表的最佳方法是什么 以便处理先出现的 Future 注意 异步客户端仅返回 Future 而不返回 CompletableFuture
  • 如何获取ISP名称?

    如何在 Salesforce com 中捕获用户的 ISP 名称 该解决方案可以采用 Salesforce com 中的 JavaScript 例如 Apex VisualForce Pages 捕获用户 ISP 名称的网站示例是 http
  • 如何调试 Python 日志记录配置文件错误

    我已将 Python 的日志记录模块添加到我的代码中 以避免混乱的打印语句 但我却因配置错误而陷入困境 错误消息的信息不是很丰富 Traceback most recent call last File HDAudioSync py lin
  • 左反加入Spark?

    我定义了两个表 如下所示 val tableName table1 val tableName2 table2 val format new SimpleDateFormat yyyy MM dd val data List List mi
  • Bootstrap 速度很慢如何让它更快

    我的网站是 设计辣 http designspicy com 我的网站在 bootstrap css 和 js 期间速度很慢 加载时间 3 56秒 通过 平多姆 bootstrap css 97 9 kB bootstrap js 28 7
  • PostgreSQL 不同主要版本的 pg_dump 和 pg_restore

    我的开发机器 称之为 D 运行 PostgreSQL 9 4 5 我的生产机器 称之为 P 运行 PostgreSQL 8 4 20 我不使用 PostgreSQL 9 x 中的任何新功能或类型 有时我需要在 D 上镜像 P 的状态 有时我
  • 如何使用开发分支中的一行命令更新本地 master 并重新设置其基准?

    假设我正在一个名为dev那就是跟踪master 如果我想更新我的主分支 我需要经常运行这一系列命令 git checkout master git pull git checkout dev git rebase i master 当我在
  • 使用 Eclipse 的 JAX-RPC 规范不支持数据类型的大错误

    这以前从未发生过 我从未见过任何这些警告 一定有一个我遗漏的小修复 我无法像它所说的那样取出类 对象 映射等的所有实例 我之前在同一个网络服务中使用过这些 没有任何问题 我添加了一种与其他方法类似的方法 我得到这个 S 有人可以帮忙吗 Th
  • Apache Beam:跳过已构建的管道中的步骤

    有没有办法有条件地跳过已构建的管道中的步骤 或者管道构建是否被设计为控制运行哪些步骤的唯一方法 通常 管道构造控制将执行管道中的哪些转换 但是 您可以想象一个输入 多个输出ParDo复用输入PCollection到输出之一PCollecti
  • 如何在Shiny中实时刷新sliderInput()(不仅仅是滑动结束时)?

    抱歉 不知道问题说得够清楚吗 在Shiny中 滑块每次滑动时 只会计算并更新滑动结束时的值 如果我将它的值链接到图表上 滑动时看起来不太平滑 图表只会在释放鼠标时或几秒钟后发生变化 而不是随着滑动而不断变化 使用滑动条改变y 图表中红点的位