Как связать блестящую кнопку действия с сюжетной анимацией в R? - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь запустить анимацию графического графика с помощью блестящей кнопки действия.Анимация выполнена с использованием кадров по сюжету.Тем не менее, это создает кнопку автоматического воспроизведения, которая запускает анимацию.Я не хочу, чтобы эта кнопка существовала, и вместо этого я хочу запустить анимацию с помощью блестящей кнопки действия, которую я создал.

Я безуспешно пытался использовать plotlyProxy с 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), 
              '\nA: ', round(compUn$A, 3),
              '\nReturn: ', round(compUn$R, 3))) %>%

animation_opts(frame = 10000, redraw = FALSE)

Конечная анимация графика должна представлять собой статическую синусоидальную волну с движущимся маркером после нажатия кнопки блестящего действия.

1 Ответ

1 голос
/ 24 июня 2019
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)

enter image description here

...