是否可以使用闪亮的observeEvent
或类似的动画按钮?
也就是说,如何检测按下动画按钮以在侧面显示其他内容?
我们需要对按钮的引用,但是在HTML输出中,我找不到为按钮指定的id
。我还尝试使用情节本身进行动画处理,但这也不起作用。
看着?animation_opts
,我发现了list of possible attributes,但找不到。我看到了对execute = bool
属性的引用,描述为:
当
true
时,将执行API方法。当false
时,所有其他行为都相同,并且命令执行被跳过。例如,在挂接到plotly_buttonclicked
方法并手动执行API命令而又不失去updatemenu的好处的情况下,这很有用,该更新菜单通过method
和{ {1}}。
但是我看不到如何调用args
。而且,实际上,我不想在内部调用它,而只是在用户调用时plotly_buttonclicked
。
因此,基本上,给出以下示例:
observe
每当用户按下“播放”时,我都希望在控制台上打印一些内容。
答案 0 :(得分:0)
有一个事件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的“播放”按钮来代替使用冗长的“播放”按钮;参见this answer。
事实上,您发现了好事件。是plotly_buttonclicked
。将我的代码替换为:
p %>% onRender("
function(el, x){
el.on('plotly_buttonclicked', function(){
Shiny.setInputValue('anim', true)
});
}")