r语言 - 对情节动画按钮做出反应



是否可以为情节动画按钮制作闪亮的observeEvent或类似的东西?

也就是说:如何检测何时按下动画按钮以在侧面显示其他内容?

我们需要对按钮的引用,但查看 HTML 输出,我找不到按钮的id。我也尝试使用情节本身来制作动画,但这也不起作用。

查看?animation_opts,我找到了可能的属性列表,但无法弄清楚。我看到了对execute = bool属性的引用,描述为:

true时,将执行 API 方法。false时,所有其他行为都相同,命令执行将被跳过。例如,当挂钩到plotly_buttonclicked方法并手动执行 API 命令时,这可能很有用,而不会失去通过methodargs的规范自动绑定到绘图状态的 updatemenu 的好处。

但是我看不出如何称呼plotly_buttonclicked.而且,实际上,我不想在内部调用它,而只是在用户调用它时observe

所以,基本上,给定这个例子:

library(plotly)
library(shiny)
ui <- fluidPage(
plotlyOutput("p")
)
server <- function(input, output, session) {
p <- plot_ly() %>%
add_pie(values = c(1, 2, 3, 4, 5, 6),
frame = c(1, 1, 2, 2, 3, 3))
output$p <- renderPlotly(p)
observeEvent(p, ignoreInit = TRUE, {
print(str(p))
})
}
shinyApp(ui, server)

我想在用户按"播放"时将内容打印到控制台。

有一个事件plotly_animated但似乎只有在动画完成后才会触发(编辑:这不是好事件;请参阅最后的编辑(。

library(shiny)
library(plotly)
library(htmlwidgets)
ui <- fluidPage(
plotlyOutput("p")
)
server <- function(input, output, session) {
output$p <- renderPlotly({
p <- plot_ly() %>%
add_pie(values = c(1, 2, 3, 4, 5, 6),
frame = c(1, 1, 2, 2, 3, 3))
p %>% onRender("
function(el, x){
el.on('plotly_animated', function(){
Shiny.setInputValue('anim', true)
});
}")
})
observeEvent(input$anim, {
print("ANIMATION")
})
}
shinyApp(ui, server)

否则,您可以在 Shiny 中执行"播放"按钮,而不是使用情节性的"播放"按钮;请参阅此答案。


编辑

事实上,你找到了好事件。这是plotly_buttonclicked.将我的代码替换为:

p %>% onRender("
function(el, x){
el.on('plotly_buttonclicked', function(){
Shiny.setInputValue('anim', true)
});
}")

相关内容

  • 没有找到相关文章

最新更新