如何将sliderInput默认设置为';播放';当应用程序窗口打开/刷新时
该示例是可复制的,因此当您运行下面的代码时,您将能够看到只有单击如何将sliderInput默认设置为';播放';当应用程序窗口打开/刷新时,r,animation,shiny,R,Animation,Shiny,该示例是可复制的,因此当您运行下面的代码时,您将能够看到只有单击更新滑块后,播放按钮才会响应 我想在播放按钮上添加一个条件,这样,如果用户按下播放,它将按当前控件的原样运行动画。但是,如果用户更改控件(速度和间隔),则仅当单击操作按钮时,主滑块才会更新 我已经做到了这一点,但当应用程序加载时,用户必须首先单击“更新”按钮来初始化播放按钮的反应,而这在加载应用程序时并不明显 如果应用程序在加载时默认为play,或者在play按钮上传递条件的方法也可以,我就可以了 这是我的密码: library(s
更新滑块
后,播放按钮
才会响应
我想在播放按钮
上添加一个条件,这样,如果用户按下播放
,它将按当前控件的原样运行动画。但是,如果用户更改控件(速度和间隔),则仅当单击操作按钮时,主滑块才会更新
我已经做到了这一点,但当应用程序加载时,用户必须首先单击“更新”按钮来初始化播放按钮的反应,而这在加载应用程序时并不明显
如果应用程序在加载时默认为play
,或者在play按钮上传递条件的方法也可以,我就可以了
这是我的密码:
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
titlePanel("tester"),
sidebarLayout(
sidebarPanel(id="sidebar",
uiOutput("slider"),
actionButton("change_controls",tags$b("Update controls")),
uiOutput("speed_value"),
uiOutput("step_size")
),
mainPanel(
h4(textOutput("selectedtime"))
)
)
)
server <- function(input, output,session) {
##make the updates reactive to the action button
observeEvent(input$change_controls,{
val <- input$timeRange
updateSliderInput(session, "timeRange",value=val)
})
##datetime slider definition.
output$slider <- renderUI({
##make this slider reactive when the actionbutton is updated.
input$change_controls
##isolating their dependencies so the slider does not refresh whiles changes are being made.
steps <- isolate(input$step_size)
speed <- isolate(input$speed)
##slider definition
sliderInput("timeRange", label = "time:", width = '600px',
min = 1,
max = 10000,
value = 1,
step = 60*steps,
animate = animationOptions(interval = 3200 - (speed*300))
)
})
##animation speed control
output$speed_value <- renderUI({
sliderInput("speed",
label = div(style='width:300px;',
div(style='float:left;', 'slower'),
div(style='float:right;', 'faster')),
min = 1,
max = 10,
value = 6,
width = '300px')
})
##time step definition by user
output$step_size <- renderUI({
sliderInput("step_size","Steps:",
min = 10, max = 60, value = 1, width = '300px')
})
##OUTPUT
observe({
output$selectedtime <- renderText({
paste(format(input$timeRange))
})
})
}
shinyApp(ui,server)
库(闪亮)
图书馆(shinyjs)
我不确定我是否知道你想要什么。首先,sliderInput“timeRange”中的变量“minimum.slider”不存在。但是,在renderUI()中放置sliderInput(“速度”和“步长”)有什么原因吗?如果你把它放在代码的ui部分,它应该可以正常工作。我已经删除了minimum.slider变量。抱歉。速度和步长在我正在使用的更大的应用程序中做了其他事情。但是,是的,我同意它们可以放在代码的ui部分。我想要的是启用一个条件,即“如果用户按下播放滑块,则不显示动画”必须单击“更新滑块”操作按钮。但如果步长和速度发生变化,则只有在单击“更新滑块”按钮时,更新才会进入“时间范围”滑块。