我正在尝试使用闪亮的操作按钮触发情节图的动画.动画是通过在情节中使用帧来完成的.但是,这会创建一个触发动画的自动播放按钮.我不希望此按钮存在,而是希望使用我创建的闪亮动作按钮来触发动画.
I am trying to trigger an animation of a plotly graph with a shiny action button. The animation is done with the use of frames in plotly. However, this creates an automatic play button that triggers the animation. I don't want this button to exist and, instead, I want to trigger the animation with a shiny action button I created.
我尝试过将 plotlyProxy 与 plotlyProxyInvoke("animate") 函数一起使用,但未成功.
I have tried, unsuccessfully, using the plotlyProxy with the plotlyProxyInvoke("animate") function.
p <- plot_ly(sinusoid, x = ~time, y = ~sin, type = "scatter", mode = 'line',
colors = colorRampPalette(brewer.pal(5,"Spectral"))(50), hoverinfo = 'none',
name = "Cycle") %>%
add_markers(x = compUn$angleShift, y = compUn$sin, type = "scatter",
name = compUn$Country[i], showlegend = TRUE, marker = list(size = 12),
frame = compUn$DateStringAdjusted, hoverinfo = 'text',
text = paste0('D: ', round(compUn$D, 3),
'
A: ', round(compUn$A, 3),
'
Return: ', round(compUn$R, 3))) %>%
animation_opts(frame = 10000, redraw = FALSE)
点击闪亮的动作按钮后,最终的绘图动画应该是带有移动标记的静态正弦波.
The final plot animation should be a static sine wave with a moving marker, once the shiny action button is clicked.
library(shiny)
library(plotly)
library(htmlwidgets)
ui <- fluidPage(
actionButton("anim", "Animate"),
plotlyOutput("plot")
)
server <- function(input, output){
output[["plot"]] <- renderPlotly({
df <- data.frame(
x = c(1,2,1),
y = c(1,2,1),
f = c(1,2,3)
)
df %>%
plot_ly(
x = ~x,
y = ~y,
frame = ~f,
type = 'scatter',
mode = 'markers',
marker = list(size = 20),
showlegend = FALSE
) %>%
animation_button(visible = FALSE) %>%
onRender("
function(el,x){
$('#anim').on('click', function(){Plotly.animate(el);});
}")
})
}
shinyApp(ui, server)